CodeBlanks Logo Icon CodeBlanks

Kompozisyon

JavaScript kursu · İleri seviye · Ders 56/100

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

  1. 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)).

  2. 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);
  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

İleri seviye bölümündeki tüm dersler