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, küçük ve anonim function'lar oluşturmanıza tam ihtiyaç duyduğunuz yerde olanak tanıyan güçlü bir C++ özelliğidir. Bunları, ayrı bir function bildirimi yazmak zorunda kalmadan tanımlayıp kullanabileceğiniz mini function'lar olarak düşünün.

Bir lambda ifadesinin temel sözdizimi şu kalıbı izler: [](){}. Köşeli parantezlere [] yakalama yan tümcesi denir; parantezler () parametreleri (tıpkı normal function'larda olduğu gibi) içerir ve küme parantezleri {} function gövdesini içerir.


Yakalama yan tümcesi, lambda'nın çevreleyen kapsamdan hangi variable'ları kullanabileceğini kontrol eder. En yaygın biçimler şunlardır:

[=] — tüm yerel variable'ları değerle yakalar (lambda kendi copy'sini alır)
[&] — tüm yerel variable'ları başvuruyla yakalar (lambda özgün olanlara erişir)
[] — hiçbir şeyi yakalamaz (lambda dışarıdaki hiçbir variable'ı kullanamaz)

Basit bir lambda işlevinin nasıl oluşturulup ç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 lambda'yı bir variable içinde storing yapmadan immediately tanımlayabilir ve çalıştırabilirsiniz:

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

Lambda ifadeleri, ayrı olarak tanımlamak istemediğiniz kısa, tek seferlik function'lar için özellikle kullanışlıdır. Kodunuzu daha öz hâle getirir ve ilgili mantığı bir arada tutar.

challenge icon

Görev

Kolay

Lambda ifadelerinin temel sözdizimini ve execution işlemini gösteren bir program oluştur. Bu challenge, parametreleri olmayan basit lambda function'larını nasıl tanımlayıp çağıracağını anladığını test edecek.

Programın şunları yapmalı:

  1. Hello from Lambda! yazdıran bir lambda ifadesi Create et
  2. Bu lambdayı auto keyword'ünü using bir variable içinde Store et
  3. Lambda function'ını Execute etmek için Call et
  4. Lambda executed successfully! yazdıran ikinci bir lambda ifadesi Create et
  5. Bu ikinci lambdayı bir variable içinde Store without hemen Execute et

Aşağıdaki tam output formatını kullan:

Hello from Lambda!
Lambda executed successfully!

Lambda ifadelerinin, köşeli parantezlerin [] capture clause olduğu, parantezlerin () parametreleri tuttuğu (bu challenge için boş) ve süslü parantezlerin {} function body'sini içerdiği [](){} sözdizimini kullandığını unutma. Bir lambdayı auto variableName = [](){...}; kullanarak bir variable içinde Store edebilir ve ardından variableName(); ile Call edebilirsin. Immediate execution için, lambdayı tek bir ifadede tanımlayıp çağıran [](){...}(); sözdizimini kullanabilirsin.

Kendin dene

#include <iostream>
using namespace std;

int main() {
    // TODO: Kodunuzu aşağıya yazın
    // Create a lambda expression that prints "Hello from Lambda!"
    // auto anahtar kelimesini kullanarak bir değişkende saklayın
    
    // Lambda fonksiyonunu çağırın
    
    // Create a second lambda that prints "Lambda executed successfully!"
    // 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

Kendi başına pratik yap: Online C++ derleyicisi