İle Timilehin Omolana
PaylaşmakCıvıldamakPaylaşmakE-posta

Lambdaların kodunuzu nasıl daha verimli ve bakımını daha kolay hale getirebileceğini öğrenin.

Programlama dilleri, kendilerini uzun zaman önce kuran C++ gibiler bile sürekli olarak gelişir. Standart kitaplıklara işlevler ekler ve dinamik bir alanda çalışan programcıların işini kolaylaştırmak için başka değişiklikler yaparlar.

Dilin evriminin getirdiği güncellemelerin bir parçası olarak C++, 2011 sürümünde lambda ifadeleri için destek ekledi.

Lambda ifadesi tam olarak nedir ve bir C++ programcısı olarak bunu kendi yararınıza nasıl kullanabilirsiniz?

Lambda İfadesi Nedir?

Bir lambda ifadesi, lambda işlevi olarak da bilinir. Tıpkı argümanları kabul etme, işlemleri gerçekleştirme ve bir değer döndürme yeteneğine sahip satır içi bir ifadedir. tipik bir işlev.

Bir lambda'yı başka bir fonksiyonun içinde kullanabilir ve onu bir değişkene atayabilirsiniz. Lamba işlevleri, bir programda anonim bir işlev nesnesi tanımlamanın pratik bir yoludur. Neredeyse her dil lambdaları destekler, ancak her uygulama diğerlerinden farklıdır.

instagram viewer

C++ Lambda İfadesinin Parçaları Nelerdir?

Lambda ifadelerinin C++'da kullanımı kolaydır. Bir lambda ifadesinin sözdizimini C++'da aşağıdaki gibi parçalayabilirsiniz:

[capture_clause](parametreler) seçenekler { ifade_gövdesi; }

Örneğin:

int değer = 13;
Oto sumPlusVal = [değer](int a, int b) değişkenistisnasız ->int { dönüş val + a + b; };
sumPlusVal(2, 5); // 20

Bu kod, sumPlusVal değişken auto çünkü bir lambda ifadesi herhangi bir veri türünü kabul edip döndürebilir. Bu, derleme sırasında türü belirlemeyi derleyiciye bırakır.

Yukarıdaki koddan, bir lambda ifadesinin nasıl çalıştığını belirten birkaç parça içerdiğini görebilirsiniz. İşte bu bileşenlerin her birine hızlı bir genel bakış.

  1. Yakalama maddesi: Bu, önceden var olan değişkenleri belirtebileceğiniz veya ifade gövdesinde kullanmak üzere yenilerini tanımlayabileceğiniz bir lambda ifadesinin ilk bölümüdür. Yakalamaları belirtmenin farklı yolları vardır, örneğin:
    otomatik addTwo = [foo](){ dönüş foo + 2; }; // değere göre
    otomatik addÜç = [&bar](){ dönüş çubuk + 3; }; // referans olarak
    otomatik addAllVal = [=](){ dönüş foo + çubuk; }; // hepsi değere göre
    otomatik addAllRef = [&](){ dönüş foo + çubuk; }; // tümü referansa göre

    // yakalama yan tümcesinde bir değişken oluşturun
    auto createVarInCapture = [fooBar = foo + bar](){ dönüş fooBar * 5; };

    // yakalama yok - foo'ya erişilemediğinden hata döndürür
    auto errorExpression = [](){ dönüş foo + 2; };

  2. parametreler: Lambda ifadesinin bu kısmı da isteğe bağlıdır. Lambda'nın gerektirdiği fonksiyon parametrelerini içerir. Bu, C++'da fonksiyon parametrelerini tanımlamanızın olağan yolundan farklı değildir.
  3. Seçenekler: Bir lambda ifadesi tanımlarken seçenekleri de belirtebilirsiniz. Kullanabileceğiniz bazı seçenekler şunlardır: değişken, istisna (Örneğin istisnasız ilk örnek kodda), ->dönüş_türü (Örneğin ->int), gereklilikler, Öznitellikler, vb. bu değişken seçeneği, yakalamaların lambda içinde değiştirilebilir olmasına izin verdiği için sıklıkla kullanılır. Aşağıdaki kod bunu göstermektedir.
    int değer = 10;

    // bir hata döndürür - değer, ifadenin içindeki bir sabittir
    otomatik azalma = [değer](){ dönüş --değer; };
    otomatik artış = [değer]() değişken { dönüş ++değer; };
    artış(); // 11

    Diğer seçenekler nadiren kullanılsa da, bunlar hakkında daha fazla bilgiyi adresinden edinebilirsiniz. cppreference.com lambdalarla ilgili sayfa.
  4. ifade gövdesi: Bu, bir işlevin yapacağı gibi, bir değeri yürüten ve döndüren lambda ifadesinin gövdesidir. Gerekirse, bir lambda ifadesinin gövdesini birden fazla satıra bölebilirsiniz. Ancak, düzensiz kodu önlemek için mümkün olduğunca kısa tutmak en iyi uygulamadır.

Lambda İfadelerinin Faydaları Nelerdir?

Kodunuzda lambda işlevlerini kullanmanın birçok avantajı vardır. Artan geliştirme hızı ve verimliliğinin yanı sıra lambdalardan elde ettiğiniz en önemli faydalar şunlardır:

  • Lambda ifadeleri kodu temiz tutmaya yardımcı olur. Kodunuzu basit ve düzenli tutmanın en iyi yollarından biri, mümkün olduğunda lambda kullanmaktır. Bu, okunabilir ve yeniden kullanılabilir bir kod yapısının korunmasında çok yardımcı olabilir.
  • Lambdaları parametre olarak diğer fonksiyonlara geçirebilirsiniz.. bu C++ standart kitaplığıstandart:: sıralama() yöntem bu faydadan yararlanır. İşlevin sıralamayı nasıl gerçekleştireceğini belirtmek için bu yöntemin parametrelerinden biri olarak bir lambda iletebilirsiniz. Örneğin:
     standart:: vektör<int> dizi = {2, 5, 1, 3, 4};
    std:: sort (arr.begin(), arr.end(), [](int a, int b){ dönüş bir // dizi = {1, 2, 3, 4, 5}
  • Lambdalar yeniden kullanılabilir. Bazen bir kod bloğunu yeni bir fonksiyon tanımlamaya gerek kalmadan programınızdaki bir fonksiyon kapsamında yeniden kullanılabilir hale getirmek isteyebilirsiniz. Lambdalar bu gibi durumlarda çok yardımcı olabilir. Aşağıdaki yeniden kullanılabilir lambda ifadesi örneğini düşünün:
    #Dahil etmek <iostream>
    kullanarak ad alanıstandart;

    intana(){
    // yeniden kullanılabilir bir lambda tanımla
    auto addUp = [](auto a, auto b, auto c) noexcept {
    cout <<"Şimdi ekleniyor... "<< a <<", "<< b <<" ve "<< c << son;
    dönüş a + b + c ;
    };

    cout << ekleme (22, 33, 44) << son;
    cout << addUp (dize("Mutlu "), sicim("Doğum"), sicim("gün")) << son;
    cout << addUp(doğru, yanlış, doğru) << std:: endl; // sayılar (1 ve 0) olarak yürütülür
    }

    Bu program aşağıdaki sonucu üretir: Bu örnek, herhangi bir türle kullanabilmeniz için bir lambda tanımlamanın ne kadar basit olduğunu gösterir.

Lambda'ları C++'da Kullanma

Lambda ifadelerinin sunduğu başka birçok fayda vardır ve bunları programınızın yapısı daha karmaşık hale geldikçe keşfedeceksiniz. Aslında, C++ programcıları bazen lambda ifadelerine kapanışlar olarak atıfta bulunurlar çünkü bunlar kodda kapanışları uygulamak için harika bir yoldur.

Modern C++ kavramlarını kod tabanınıza dahil etmek istiyorsanız lambda ifadelerini göz önünde bulundurmalısınız.

Günlük Programlama Sorunları için 11 C++ Kod Parçacığı

Sonrakini Oku

PaylaşmakCıvıldamakPaylaşmakE-posta

İlgili konular

  • Programlama
  • Programlama
  • Kodlama Eğitimleri

Yazar hakkında

Timilehin Omolana (5 Makale Yayınlandı)

Timilehin, sunucu tarafı teknolojileri ve dağıtılmış sistemler dünyasını keşfetmeyi seven bir Yazılım Mühendisi ve Teknik yazardır.

Timilehin Omolana'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın