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.

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

Parametreli 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ı: num1 ve num2
  • Gerçekleştirilecek matematiksel işlemi temsil eden bir karakter: operation

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

  1. İki tamsayı parametresi alan ve toplamlarını Sum: [result] biçiminde yazdıran add adlı bir lambda ifadesi oluşturun
  2. İki tamsayı parametresi alan ve farklarını Difference: [result] biçiminde yazdıran subtract adlı bir lambda ifadesi oluşturun
  3. İki tamsayı parametresi alan ve çarpımlarını Product: [result] biçiminde yazdıran multiply adlı bir lambda ifadesi oluşturun
  4. İki sayıyı ve işlem karakterini girdiden okuyun
  5. İşlem karakterine göre, iki sayıyla uygun lambdayı çağırın

İşlem karakteri aşağıdakilerden 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 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;
}
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

Kendi başına pratik yap: Online C++ derleyicisi