Lambda nedir?
- C++ kursu
- Orta seviye
- Ders 76/116
- 5 dk
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
#include <iostream>
int main() {
// doubleIt lambda ifadesini tanımla ve 5 ile çağır
return 0;
}Örnek çözüm
#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?
// 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
auto doubleIt = [](int x) { return x ____; };
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 |