Curry
Bir fonksiyonu argümanları sırayla alan zincir haline getirmeyi öğrenirsin.
Currying
Currying, tek bir fonksiyonu argümanları sırayla alan bir zincire çevirir. Üç argümanlı bir fonksiyon, her seferinde bir argüman alan üç iç içe fonksiyona dönüşür.
const add = a => b => c => a + b + c;
add(1)(2)(3); // 6Her çağrı bir sonraki fonksiyonu döndürür. Son çağrıya kadar gerçek hesap yapılmaz. Bu yapı, argümanları adım adım bağlayarak yeni fonksiyonlar üretmeyi kolaylaştırır.
Kısmi uygulama
Kısmi uygulama (partial application), bir fonksiyona bazı argümanları önceden bağlayıp yeni bir fonksiyon üretmektir. Currying bu fikrin doğal bir sonucudur.
const add = a => b => c => a + b + c;
const addOne = add(1); // b => c => 1 + b + c
addOne(2)(3); // 6Burada add(1) çağrısı a'yı bağlar ve geriye iki argümanlı bir fonksiyon bırakır. addOne artık hazır bir fonksiyondur ve istediğin yerde yeniden kullanılabilir.
Uygulama Curried multiply fonksiyonu yaz
multiply adında curried bir fonksiyon yaz. a'yı alır, b'yi alan ve a * b döndüren bir fonksiyon döndürür (a => b => a * b). Sonra console.log(multiply(3)(4)) çağrısını yazdır.
Örnek çözümü göster
const multiply = a => b => a * b;
console.log(multiply(3)(4));
Kendini test et
-
add(1)(2)(3) ne gerektirir?
- Tek bir fonksiyon çağrısı
- İç içe dönmüş fonksiyonlar
- Bir Promise zinciri
- Bir döngü
Cevabı göster
İç içe dönmüş fonksiyonlar — Doğru! Her çağrı bir sonraki fonksiyonu döndürür; iç içe dönmüş fonksiyonlar gerekir.
-
İlk argümanı bağla
const add = a => b => c => a + b + c; const addOne = add(____);Cevabı göster
const add = a => b => c => a + b + c; const addOne = add(1); -
Currying kavramlarını eşleştir
- currying
- argümanları sırayla
- partial application
- bazı argümanları sabitler
- a => b => c
- curry sözdizimi