CodeBlanks Logo Icon CodeBlanks

Lambda nedir?

Lambda ifadesinin ne olduğunu ve anonim fonksiyonu öğrenirsin.

Lambda nedir?

Bir lambda, adsız (anonim) bir fonksiyondur. Doğrudan kullanıldığı yerde tanımlanır; ayrı bir fonksiyon bildirimi gerekmez. Örnek: [](int x) { return x * 2; }. Bu lambda bir int alır ve ikinin katını döndürür.

Lambda'lar genellikle bir değişkene auto ile atanır: auto doubleIt = [](int x) { return x * 2; };. Sonra normal bir fonksiyon gibi çağrılır: doubleIt(5) sonucu 10 olur. Lambda'lar özellikle STL algoritmalarına küçük işlemler geçirmek için kullanışlıdır; ayrı fonksiyon yazma yükünü ortadan kaldırır.

Lambda ve fonksiyon

Lambda ile normal fonksiyon benzer işler ama fark vardır. Normal fonksiyon derleme zamanında adlandırılır ve başka yerlerden çağrılabilir. Lambda ise genellikle kullanıldığı yerde tanımlanır ve adı yoktur; auto ile bir değişkene atanabilir.

Lambda'nın gücü, çevresindeki değişkenleri yakalayabilmesidir (capture). Bu, normal fonksiyonların yapamadığı bir şeydir. Örneğin [](int x) { return x + offset; } içinde offset dışarıdan gelebilir; lambda bunu capture clause ile yakalar. Bu konuyu ileriki derslerde göreceğiz.

Uygulama Lambda tanımla ve çağır

auto doubleIt = [](int x) { return x * 2; }; ile bir lambda tanımla. main içinde doubleIt(5) çağrısının sonucunu std::cout ile yazdır.

Başlangıç kodu

main.cpp
#include <iostream>

int main() {
    // doubleIt lambda ifadesini tanımla ve 5 ile çağır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

int main() {
    auto doubleIt = [](int x) { return x * 2; };
    std::cout << doubleIt(5);
    return 0;
}

Beklenen çıktı

10

Soru ve cevaplar

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

1 Hangisi geçerli bir lambda ifadesidir?

main.cpp
// geçerli lambda sözdizimi
  • function(x) { return x; }
  • [](int x) { return x; } Doğru cevap
  • lambda(x) => x
  • (int x) -> x

Açıklama: [](int x) { return x; } geçerli bir lambda'dır.

2 Lambda gövdesini tamamla

Soru
auto doubleIt = [](int x) { return x ____; };
Cevap
auto doubleIt = [](int x) { return x * 2; };

Açıklama: x * 2 ile ikiye katlama yapılır.

3 Parçayı rolüne eşle

Kavram Anlamı
[] Capture clause
(int x) Parametre listesi
{ return x; } Gövde
auto f = [](...) {...}; Atama

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