Kompozisyon
Küçük fonksiyonları birleştirerek büyük fonksiyonlar yapmayı öğrenirsin.
Kompozisyon
Kompozisyon, küçük fonksiyonları birleştirerek daha büyük bir fonksiyon yapmaktır. Bir fonksiyonun çıktısı öbürünün girdisi olur. Bu sayede karmaşık işleri küçük, yeniden kullanılabilir parçalara bölersin.
const addOne = x => x + 1;
const double = x => x * 2;
const result = double(addOne(3));Burada önce addOne(3) çalışır ve 4 üretir, sonra double(4) çalışır ve 8 verir. İç içe çağrı, fonksiyonların birleşimidir.
compose ve pipe
İki yaygın yardımcı fonksiyon kompozisyonu kolaylaştırır. compose fonksiyonları sağdan sola uygular: compose(f, g)(x) önce g'yi, sonra f'yi çağırır.
const compose = (f, g) => x => f(g(x));pipe ise soldan sağa uygular: pipe(f, g)(x) önce f'yi, sonra g'yi çağırır. pipe okuma sırasına daha yakındır; compose matematiksel gösterime daha yakındır.
Uygulama compose yardımcısını yaz
compose adında bir fonksiyon yaz. İki fonksiyon alır (f ve g) ve x için f(g(x)) hesaplayan yeni bir fonksiyon döndürür. addOne ve double zaten tanımlı. Sonra const fn = compose(double, addOne); ve console.log(fn(3)); çağrısı yap.
Örnek çözümü göster
function compose(f, g) {
return x => f(g(x));
}
const fn = compose(double, addOne);
console.log(fn(3));
Kendini test et
-
compose(f, g)(x) ne döndürür?
const compose = (f, g) => x => f(g(x));- g(f(x))
- f(x) + g(x)
- f(g(x) + 1)
- f(g(x))
Cevabı göster
f(g(x)) — Doğru! compose önce g'yi, sonra f'yi uygular: f(g(x)).
-
8 sonucunu verecek compose çağrısı
const addOne = x => x + 1; const double = x => x * 2; // 8 sonucunu ver: const result = ____;Cevabı göster
const addOne = x => x + 1; const double = x => x * 2; // 8 sonucunu ver: const result = compose(double, addOne)(3); -
compose ve pipe yönlerini eşleştir
- compose(f, g)
- f(g(x))
- pipe(f, g)
- g(f(x))
- chaining .map
- sıralı dönüşüm