Menu
Coddy logo textTech

Lambda İfadelerine Giriş

Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 42 / 56.

Lambda ifadeleri, tam ihtiyacınız olan yerde küçük, anonim fonksiyonlar oluşturmanıza olanak tanıyan güçlü bir C++ özelliğidir. Bunları, ayrı bir fonksiyon bildirimi yazmak zorunda kalmadan tanımlayabileceğiniz ve kullanabileceğiniz mini fonksiyonlar olarak düşünebilirsiniz.

Bir lambda ifadesinin temel sözdizimi şu kalıbı takip eder: [](){}. Köşeli parantezler [] yakalama yan tümcesi (capture clause) olarak adlandırılır, parantezler () parametreleri tutar (tıpkı normal fonksiyonlarda olduğu gibi) ve süslü parantezler {} fonksiyon gövdesini içerir.


Yakalama yan tümcesi, lambdanın çevreleyen kapsamdaki hangi değişkenleri kullanabileceğini kontrol eder. En yaygın formlar şunlardır:

[=] — tüm yerel değişkenleri değer ile yakalar (lambda kendi kopyasını alır)
[&] — tüm yerel değişkenleri referans ile yakalar (lambda orijinallere erişir)
[] — hiçbir şeyi yakalamaz (lambda dışarıdaki hiçbir değişkeni kullanamaz)

Basit bir lambda'nın nasıl oluşturulacağı ve çağrılacağı aşağıda açıklanmıştır:

auto myLambda = []() {
    std::cout << "Hello from Lambda!" << std::endl;
};

myLambda();  // Lambda fonksiyonunu çağır

Bir lambdayı bir değişkende saklamadan da hemen tanımlayabilir ve çalıştırabilirsiniz:

[]() {
    std::cout << "Immediate execution!" << std::endl;
}();

Lambda ifadeleri, ayrıca tanımlamak istemediğiniz kısa, tek seferlik fonksiyonlar için özellikle yararlıdır. Kodunuzu daha özlü hale getirirler ve ilgili mantığı bir arada tutarlar.

challenge icon

Görev

Kolay

Lambda ifadelerinin temel sözdizimini ve yürütülmesini gösteren bir program oluşturun. Bu meydan okuma, parametresiz basit lambda fonksiyonlarını nasıl tanımlayacağınız ve çağıracağınız konusundaki anlayışınızı test edecektir.

Programınız şunları yapmalıdır:

  1. Hello from Lambda! yazdıran bir lambda ifadesi oluşturun
  2. Bu lambdayı auto anahtar kelimesini kullanarak bir değişkende saklayın
  3. Yürütmek için lambda fonksiyonunu çağırın
  4. Lambda executed successfully! yazdıran ikinci bir lambda ifadesi oluşturun
  5. Bu ikinci lambdayı bir değişkende saklamadan hemen yürütün

Aşağıdaki tam çıktı formatını kullanın:

Hello from Lambda!
Lambda executed successfully!

Lambda ifadelerinin [](){} sözdizimini kullandığını unutmayın; burada köşeli parantezler [] yakalama yan tümcesidir (capture clause), parantezler () parametreleri tutar (bu meydan okuma için boştur) ve süslü parantezler {} fonksiyon gövdesini içerir. Bir lambdayı auto variableName = [](){...}; kullanarak bir değişkende saklayabilir ve ardından variableName(); ile çağırabilirsiniz. Hemen yürütme için, lambdayı tek bir ifadede tanımlayan ve çağıran [](){...}(); sözdizimini kullanabilirsiniz.

Kopya kağıdı

Lambda ifadeleri, satır içinde (inline) tanımlanabilen anonim fonksiyonlardır. Şu sözdizimini [](){} kullanırlar:

  • [] - yakalama ifadesi (dış değişkenlere erişimi kontrol eder)
  • () - parametreler
  • {} - fonksiyon gövdesi

Yaygın yakalama ifadesi formları:

  • [] - hiçbir şeyi yakalama
  • [=] - tüm dış değişkenleri değere göre yakala
  • [&] - tüm dış değişkenleri referansa göre yakala

Bir lambdayı saklama ve çağırma:

auto myLambda = []() {
    std::cout << "Hello from Lambda!" << std::endl;
};

myLambda();  // Lambda fonksiyonunu çağır

Bir lambdayı anında çalıştırma:

[]() {
    std::cout << "Immediate execution!" << std::endl;
}();

Kendin dene

#include <iostream>
using namespace std;

int main() {
    // TODO: Kodunuzu aşağıya yazın
    // "Hello from Lambda!" yazdıran bir lambda ifadesi oluşturun
    // auto anahtar kelimesini kullanarak bir değişkende saklayın
    
    // Lambda fonksiyonunu çağırın
    
    // "Lambda executed successfully!" yazdıran ikinci bir lambda oluşturun
    // Bir değişkende saklamadan hemen çalıştırın
    
    return 0;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler