Menu
Coddy logo textTech

Parametreli Lambdalar

Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 43 / 56.

Temel lambda söz dizimini anladığınıza göre, parametreler ekleyerek lambdaları daha kullanışlı hale getirelim. Tıpkı normal fonksiyonlar gibi, lambdalar da üzerinde çalışmak için girdi değerleri 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: 8

Parametre 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: 28

Parametre 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.

challenge icon

Görev

Kolay

Farklı matematiksel işlemler gerçekleştiren basit bir hesap makinesi oluşturarak, parametreli lambda ifadelerini gösteren bir program oluşturun. Bu görev, girdi değerlerini kabul eden ve onlarla çalışan lambda ifadelerini nasıl tanımlayacağınız konusundaki anlayışınızı test edecektir.

Aşağıdaki girdiler sağlanacaktır:

  • Hesaplamalar için sayıları temsil eden iki tam sayı num1 ve num2
  • Gerçekleştirilecek matematiksel işlemi temsil eden bir karakter operation

Programınız şunları yapmalıdır:

  1. İki tam sayı parametresi alan ve toplamlarını Sum: [result] formatında yazdıran add adında bir lambda ifadesi oluşturun
  2. İki tam sayı parametresi alan ve farklarını Difference: [result] formatında yazdıran subtract adında bir lambda ifadesi oluşturun
  3. İki tam sayı parametresi alan ve çarpımlarını Product: [result] formatında yazdıran multiply adında bir lambda ifadesi oluşturun
  4. Girdiden iki sayıyı ve işlem karakterini okuyun
  5. İşlem karakterine bağlı olarak, iki sayı ile uygun lambdayı çağırın

İşlem karakteri şunlardan biri olacaktır:

  • Toplama için + (add lambdasını çağırın)
  • Çıkarma için - (subtract lambdasını çağırın)
  • Çarpma için * (multiply lambdasını çağırın)

İşleme bağlı olarak aşağıdaki tam çıktı formatını kullanın:

Toplama için:

Sum: [result]

Çıkarma için:

Difference: [result]

Çarpma için:

Product: [result]

Lambda parametrelerinin, normal fonksiyon parametreleriyle aynı sözdizimi kullanılarak yakalama ifadesinden (capture clause) sonraki parantezlerin içinde tanımlandığını unutmayın. Her lambdayı auto anahtar kelimesini kullanarak bir değişkende saklayın, ardından bir if-else ifadesi veya switch ifadesi kullanarak girdi işlem karakterine göre uygun lambdayı çağırın.

Kopya kağıdı

Lambda ifadeleri, yakalama ifadesinden (capture clause) sonra parantez içine yerleştirerek parametre kabul edebilir:

auto addNumbers = [](int a, int b) {
    std::cout << "Sum: " << (a + b) << std::endl;
};

addNumbers(5, 3);  // Yazdırır: Sum: 8

Parametre sözdizimi tıpkı normal fonksiyon parametreleri gibi çalışır - türü ve ardından parametre adını belirtin. Birden fazla parametre virgülle ayrılır.

Bir lambdayı saklamadan parametrelerle hemen de çağırabilirsiniz:

[](int x, int y) {
    std::cout << "Product: " << (x * y) << std::endl;
}(4, 7);  // Yazdırır: Product: 28

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;
}
quiz iconKendini test et

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