Lambda sözdizimi
- C++ kursu
- Orta seviye
- Ders 77/116
- 5 dk
[](){} 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
#include <iostream>
int main() {
// add lambda ifadesini tanımla ve 3, 4 ile çağır
return 0;
}Örnek çözüm
#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
auto f = ____(int x) { return x; };
auto f = [](int x) { return x; };
Açıklama: Boş capture clause hiçbir değişken yakalamaz.
2 Lambda'da [] neyi belirtir?
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 |