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ğırBir 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.
Görev
KolayLambda 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ı:
Hello from Lambda!yazdıran bir lambda ifadesi Create et- Bu lambdayı
autokeyword'ünü using bir variable içinde Store et - Lambda function'ını Execute etmek için Call et
Lambda executed successfully!yazdıran ikinci bir lambda ifadesi Create et- 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;
}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
1İşaretçiler ve Bellek
İşaretçi Nedir?Adres OperatörüDereference OperatörüNull İşaretçilerİşaretçiler ve Diziler'new' ile Dinamik Bellek'delete' ile Belleği Serbest BırakmaÖzet - İşaretçi Pratiği4Map'ler (Anahtar-Değer Çiftleri)
std::map'e GirişBir Map OluşturmaDeğerlere Erişme ve DeğiştirmeAnahtar KontrolüÇiftleri KaldırmaMap Üzerinde YinelemeÖzet - Kelime Frekansı7İleri Seviye Fonksiyonlar
Referans ile GeçmeLambda İfadelerine GirişParametreli LambdalarDönüş Değeri Olan LambdalarÖzyinelemeye GirişÖzyinelemeli FaktöriyelLambda ile Sıralama2Vektörler (Dinamik Diziler)
std::vector'a GirişBir Vektör OluşturmaEleman EklemeElemanlara ErişmeVektör BoyutuFor Döngüsü ile YinelemeAralık Tabanlı For DöngüsüEleman SilmeÖzet - Vektör İşlemleri3Proje: Görev Listesi Aracı
Projeye Genel BakışGörev EklemeKendi başına pratik yap: Online C++ derleyicisi