İşlevleri Birleştirme
Dönüşümleri zincirleyin.
İşlevleri Birleştirme, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
Birleştirme Nedir
İşlev birleştirme, iki işlevi tek bir işlevde birleştirir. Birleştirilmiş işlev, girdisini ilk işlevden geçirir ve ardından bu sonucu ikinci işleve aktarır.
Matematikte bu f(g(x)) olarak yazılır. Birleştirme, küçük ve odaklanmış işlevlerden büyük dönüşümler oluşturmanızı sağlar.
İki İşlevi Birleştirme
Bir compose yardımcı işlevi iki işlev alıp yeni bir işlev döndürür. Bu işlev çağrıldığında önce g çalışır, ardından sonucu f işlevine aktarılır.
Sıra önemlidir: önce iç işlev çalışır, dış işlev ise onun çıktısı üzerinde çalışır.
local function compose(f, g)
return function(x)
return f(g(x))
end
end
local function inc(n) return n + 1 end
local function dbl(n) return n * 2 end
local incThenDouble = compose(dbl, inc)
print(incThenDouble(3))Sıra Önemlidir
Argümanların yerini değiştirmek sonucu değiştirir. compose(f, g), önce g'nin, ardından f'nin uygulanacağı anlamına gelir.
Aşağıdaki örnek, önce iki katına çıkarıp sonra bir artırmanın, önce bir artırıp sonra iki katına çıkarmaktan farklı bir sonuç verdiğini gösterir.
local function compose(f, g) return function(x) return f(g(x)) end end
local function inc(n) return n + 1 end
local function dbl(n) return n * 2 end
print(compose(dbl, inc)(3))
print(compose(inc, dbl)(3))Metin İşlevlerini Birleştirme
Birleştirme, metin dönüşümleri de dahil olmak üzere tek argümanlı tüm işlevlerle çalışır. Kırpma, büyük-küçük harf dönüştürme veya ters çevirme işlemlerini yeniden kullanılabilir tek bir adımda zincirleyin.
Burada önce ters çevirme, ardından büyük harfe dönüştürme çalışır ve büyük harfle yazılmış ters çevrilmiş bir metin elde edilir.
local function compose(f, g) return function(x) return f(g(x)) end end
local shout = compose(string.upper, string.reverse)
print(shout("lua"))Birçok İşlevi Birleştirme
İkiden fazla işlevi zincirlemek için değişken sayıda argüman alan bir composeAll yazın. İşlevleri, iç içe çağrılarda olduğu gibi sağdan sola uygular.
Döngü, işlev listesini geriye doğru dolaşır ve değeri her işlevden geçirerek aktarır.
local function composeAll(...)
local fns = {...}
return function(x)
for i = #fns, 1, -1 do
x = fns[i](x)
end
return x
end
end
local f = composeAll(function(n) return n + 1 end,
function(n) return n * 2 end,
function(n) return n - 3 end)
print(f(10))Sağdan Sola
composeAll(a, b, c) ifadesinde en sağdaki işlev olan c önce çalışır, ardından b ve sonra a çalışır. Bu, a(b(c(x))) şeklindeki iç içe biçimle aynıdır.
Sırayı okumak zor olabilir; bu nedenle bazı kişiler bunun yerine soldan sağa çalışan bir işlem zincirini tercih eder.
Soldan Sağa İşlem Zinciri
Bir pipe, okuma sırasını tersine çevirir: işlevler yazıldıkları sırayla, soldan sağa çalışır. Birçok kişi bunu veri işlem hatalarını izlemek için daha kolay bulur.
Döngü ileri doğru ilerler ve her işlevi o ana kadarki değere uygular.
local function pipe(...)
local fns = {...}
return function(x)
for i = 1, #fns do
x = fns[i](x)
end
return x
end
end
local process = pipe(function(n) return n + 1 end,
function(n) return n * 2 end)
print(process(5))Okunabilirlik İçin İşlem Zinciri
pipe ile adımlar, yürütülme sırasına göre yukarıdan aşağıya okunur. Bu, çok aşamalı dönüşümleri kendi açıklamasını taşıyan bir yapıya dönüştürür.
Burada bir metin önce bir ön ekten arındırılır, sonra küçük harfe dönüştürülür ve ardından ters çevrilir; her adım gerçekleştiği sırayla listelenir.
local function pipe(...) local fns={...} return function(x) for i=1,#fns do x=fns[i](x) end return x end end
local transform = pipe(string.lower, string.reverse,
function(s) return "[" .. s .. "]" end)
print(transform("LUA"))Kapanışlarla Birleştirme
Kısmi uygulamayla veya kapanışlarla oluşturulmuş işlevleri birleştirebilirsiniz. Küçük ve özelleştirilmiş işlevler oluşturun, ardından bunları birbirine bağlayın.
Bu, birleştirme genel akışı ifade ederken her parçanın sınanabilir kalmasını sağlar.
local function pipe(...) local fns={...} return function(x) for i=1,#fns do x=fns[i](x) end return x end end
local function adder(n) return function(x) return x + n end end
local function muller(n) return function(x) return x * n end end
local calc = pipe(adder(3), muller(10))
print(calc(2))Birleştirme ve İşlem Hatları
Birleştirme, veri işlem hatlarının temel bağlayıcısıdır. Çağrıları derinlemesine iç içe yerleştirmek yerine, birleştirilmiş işlevi bir kez adlandırır ve birçok girdiye uygularsınız.
Bu yaklaşım eşleme işleviyle mükemmel çalışır: birleştirilmiş işlevi her öğe için dönüşüm olarak aktarabilirsiniz.
local function map(t, f) local o={} for i,v in ipairs(t) do o[i]=f(v) end return o end
local function compose(f, g) return function(x) return f(g(x)) end end
local step = compose(function(n) return n + 1 end, function(n) return n * n end)
local r = map({1, 2, 3, 4}, step)
print(table.concat(r, ", "))İşlevleri Küçük Tutun
Birleştirme, küçük ve tek amaçlı işlevleri destekler. Her işlev tek bir iş yapar; bunları birleştirerek mantığı yeniden yazmadan karmaşık davranışlar oluşturabilirsiniz.
İşlevsel tasarımın özü budur: küçük işlevlerden oluşan bir söz dağarcığı oluşturun ve daha büyük fikirleri ifade etmek için bunları birleştirin.
Hızlı Kontrol
Yanıtlamadan önce işlem sırasını dikkatle izleyin.
Özet
Birleştirme, bir işlevin çıktısını sıradaki işlevin girdisi olacak şekilde işlevleri bir araya getirir. compose(f, g), sağdan sola olacak şekilde önce g'yi, sonra f'yi çalıştırır; pipe ise okunabilirlik için soldan sağa çalışır.
composeAll ve pipe ile birçok küçük işlevi anlaşılır işlem hatlarında zincirleyebilirsiniz; bu yaklaşım özellikle eşleme işleviyle birlikte kullanıldığında güçlüdür.
Sıkça Sorulan Sorular
“İşlevleri Birleştirme” dersi ücretsiz mi?
Evet — “İşlevleri Birleştirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“İşlevleri Birleştirme” dersinde ne öğreneceğim?
Dönüşümleri zincirleyin. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“İşlevleri Birleştirme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Değer Olarak İşlevler
- map, filter, reduce
- Kısmi Uygulama
- İşlevleri Birleştirme