Parametreli Lambdalar
Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 43 / 56.
Artık temel lambda söz dizimini anladığınıza göre, parametreler ekleyerek lambdaları daha kullanışlı hâle getirelim. Tıpkı normal işlevler gibi lambdalar da üzerinde çalışacakları girdi değerlerini kabul edebilir.
Bir lambdaya parametre eklemek için, bunları yakalama ifadesinden (capture clause) sonraki parantezlerin içine yerleştirin:
auto addNumbers = [](int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
};
addNumbers(5, 3); // Şunu yazdırır: Sum: 8Parametre sözdizimi, tıpkı normal fonksiyon parametreleri gibi çalışır - türü ve ardından parametre adını belirtirsiniz. Yukarıda gösterildiği gibi, virgülle ayrılmış birden fazla parametreye sahip olabilirsiniz.
Bir lambdayı kaydetmeden parametrelerle doğrudan çağırabilirsiniz:
[](int x, int y) {
std::cout << "Product: " << (x * y) << std::endl;
}(4, 7); // Çıktı: Product: 28Parametre kabul etme yeteneği, lambdaları çok daha esnek ve yeniden kullanılabilir hale getirerek her çağrıldıklarında farklı girdi değerlerini işleyebilen küçük fonksiyonlar oluşturmanıza olanak tanır.
Görev
KolayParametreli lambda ifadelerini gösteren bir program oluşturun. Bunun için farklı matematiksel işlemler gerçekleştiren basit bir hesap makinesi oluşturun. Bu meydan okuma, girdi değerlerini kabul eden ve bunlarla çalışan lambda ifadelerinin nasıl tanımlanacağını anladığınızı test edecektir.
Aşağıdaki girdiler sağlanacaktır:
- Hesaplamalarda kullanılacak sayıları temsil eden iki tam sayı:
num1venum2 - Gerçekleştirilecek matematiksel işlemi temsil eden bir karakter:
operation
Programınız şunları yapmalıdır:
- İki tamsayı parametresi alan ve toplamlarını
Sum: [result]biçiminde yazdıranaddadlı bir lambda ifadesi oluşturun - İki tamsayı parametresi alan ve farklarını
Difference: [result]biçiminde yazdıransubtractadlı bir lambda ifadesi oluşturun - İki tamsayı parametresi alan ve çarpımlarını
Product: [result]biçiminde yazdıranmultiplyadlı bir lambda ifadesi oluşturun - İki sayıyı ve işlem karakterini girdiden okuyun
- İşlem karakterine göre, iki sayıyla uygun lambdayı çağırın
İşlem karakteri aşağıdakilerden biri olacaktır:
- Toplama için
+(addlambdasını çağırın) - Çıkarma için
-(subtractlambdasını çağırın) - Çarpma için
*(multiplylambdasını çağırın)
İşleme göre aşağıdaki tam çıktı biçimini kullanın:
Toplama için:
Sum: [result]Çıkarma için:
Difference: [result]Çarpma için:
Product: [result]Lambda parametrelerinin, capture clause'dan sonra parantezlerin içinde, normal fonksiyon parametreleriyle aynı sözdizimi kullanılarak tanımlandığını unutmayın. Her lambdayı auto anahtar sözcüğünü kullanarak bir değişkende saklayın, ardından girdi işlem karakterine göre uygun lambdayı bir if-else deyimi veya switch deyimi kullanarak çağırın.
Kendin dene
#include <iostream>
using namespace std;
int main() {
// Girdiyi oku
int num1, num2;
char operation;
cin >> num1 >> num2 >> operation;
// TODO: Toplama, çıkarma ve çarpma işlemleri için lambda ifadeleri oluşturun
// TODO: İşleme göre uygun lambdayı çağırmak için if-else veya switch ifadesi kullanı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