CodeBlanks Logo Icon CodeBlanks

Lambda sözdizimi

[](){} yapısını ve capture clause'ı öğrenirsin.

Lambda sözdizimi

Lambda'nın tam sözdizimi: [capture](parameters) -> return_type { body }. Her parça isteğe bağlıdır ama sıra sabittir. capture dış değişkenleri yakalar, parameters parametreleri alır, return_type dönüş türünü belirtir, body gövdedir.

-> return_type genellikle atlanır; derleyici return ifadesinden türü çıkarır. Örneğin [](int a, int b) { return a + b; } dönüş türünü otomatik olarak int belirler. Birden çok return farklı tür döndürüyorsa açık dönüş türü gerekir: [](int x) -> double { if (x) return x; return 0.0; }.

Dönüş türü çıkarımı

Lambda'nın dönüş türü çoğu zaman otomatik çıkarılır. return x * 2; görürse int, return x > 0; görürse bool döner. Bu, auto dönüş türü çıkarımı olarak bilinir.

Bazen açık dönüş türü gerekir: özellikle farklı return ifadeleri farklı tür döndürüyorsa. O zaman -> double gibi bir dönüş türü belirtirsin: [](int x) -> double { return x / 2.0; }. Bu, lambda sonucunun double olmasını garanti eder. Aksi halde derleyici çelişkili return türleri nedeniyle hata verir.

Uygulama İki parametreli lambda yaz

auto add = [](int a, int b) { return a + b; }; ile iki parametreli bir lambda tanımla. main içinde add(3, 4) çağrısının sonucunu std::cout ile yazdır.

Başlangıç kodu

main.cpp
#include <iostream>

int main() {
    // add lambda ifadesini tanımla ve 3, 4 ile çağır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

int main() {
    auto add = [](int a, int b) { return a + b; };
    std::cout << add(3, 4);
    return 0;
}

Beklenen çıktı

7

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Capture clause'ı tamamla

Soru
auto f = ____(int x) { return x; };
Cevap
auto f = [](int x) { return x; };

Açıklama: Boş capture clause hiçbir değişken yakalamaz.

2 Lambda'da [] neyi belirtir?

main.cpp
auto f = [](int x) { return x; };
  • Parametre listesi
  • Dönüş türü
  • Capture clause (yakalama) Doğru cevap
  • Gövde

Açıklama: [] capture clause'tür; dış değişkenleri yakalar.

3 Parçayı rolüne eşle

Kavram Anlamı
[capture] Dış değişken yakalama
(parameters) Parametre listesi
-> return_type Dönüş türü
{ body } Gövde

Orta seviye bölümündeki tüm dersler