Fabrika İşlevleri ve Üreteçler
Yapılandırılmış işlev örnekleri üretmek için kapanışları fabrika işlevi olarak kullanın.
Fabrika İşlevleri ve Üreteçler, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 3. 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.
Fabrika İşlevi Nedir?
Fabrika işlevi, bağımsız değişkenleri ve üstdeğerleri tarafından yapılandırılan başka işlevler oluşturan ve döndüren bir işlevdir.
Basit Çarpan Fabrikası
multiplier işlevine yapılan her çağrı, farklı bir factor yakalayan yeni bir kapanım döndürür.
local function multiplier(factor)
return function(x) return x * factor end
end
local double = multiplier(2)
local triple = multiplier(3)
print(double(5)) -- 10
print(triple(5)) -- 15Yapılandırılabilir Kayıt Tutucu Fabrikası
Bir kayıt tutucu fabrikası, bir ön ek dizisini yakalar ve bir kayıt işlevi döndürür.
local function makeLogger(prefix)
return function(msg)
print("[" .. prefix .. "] " .. msg)
end
end
local info = makeLogger("INFO")
local warn = makeLogger("WARN")
info("started")
warn("low memory")Sayaç Üreticisi
Bir üretici, dahili durumu korur ve her çağrıda yeni bir değer üretir.
local function counter(start, step)
local n = start - step
return function()
n = n + step
return n
end
end
local evens = counter(0, 2)
print(evens(), evens(), evens()) -- 0 2 4Aralık Üreticisi
Bir aralık üreticisi from değerinden to değerine kadar değerler üretir; aralık tükendiğinde nil döndürür.
local function range(from, to, step)
step = step or 1
local i = from - step
return function()
i = i + step
if i <= to then return i end
end
end
for v in range(1, 5) do print(v) endKısmi Uygulama
Bir fabrika, bir işlevin özelleştirilmiş bir sürümünü oluşturmak için bağımsız değişkenleri kısmen uygular.
local function partial(fn, ...)
local args = {...}
return function(...)
local all = {table.unpack(args)}
for _, v in ipairs({...}) do all[#all+1] = v end
return fn(table.unpack(all))
end
end
local add = function(a,b) return a+b end
local add10 = partial(add, 10)
print(add10(5)) -- 15Önbellekleyen Fabrika
Bir fabrika, maliyetli bir işlevin sonuçlarını önbelleğe alan bir sürümünü oluşturabilir.
local function memoize(fn)
local cache = {}
return function(x)
if cache[x] == nil then cache[x] = fn(x) end
return cache[x]
end
endDurum Bilgili Belirteç Çözümleyicisi
Bir belirteç çözümleyici fabrikası, girdi dizisini ve konumu yakalar; her çağrıda sonraki belirteci üretir.
local function lexer(input)
local pos = 1
return function()
if pos > #input then return nil end
local token = input:match("%S+", pos)
if token then pos = pos + #token + 1 end
return token
end
endÜreticiler ve Coroutine'ler
Kapanım tabanlı üreticiler daha basittir; ancak tüm durumu üstdeğerlerde taşırlar. Coroutine tabanlı üreticiler daha güçlüdür ve karmaşık mantığın herhangi bir yerinde yield kullanımına olanak tanır.
İşlev Şablonları
Fabrikalar, oluşturulma zamanında parametreleştirilen ve farklı yapılandırmalarla birçok kez yeniden kullanılan ortak örüntüler, yani işlev şablonları oluşturur.
Kürleme
Kürlenmiş bir işlev, bağımsız değişkenleri teker teker alır ve tüm bağımsız değişkenler sağlanana kadar yeni bir işlev döndürür.
local function curry2(fn)
return function(a)
return function(b)
return fn(a, b)
end
end
end
local curriedAdd = curry2(function(a,b) return a+b end)
print(curriedAdd(3)(4)) -- 7Fabrika Sorusu
Fabrika işlevlerinin temel bir özelliği nedir?
Özet: Fabrika İşlevleri
Fabrika işlevleri yapılandırılmış kapanımlar üretir; böylece kısmi uygulama, üreticiler, önbellekleme ve kürleme mümkün olur. Bunlar Lua'nın en güçlü işlevsel örüntülerindendir.
Sıkça Sorulan Sorular
“Fabrika İşlevleri ve Üreteçler” dersi ücretsiz mi?
Evet — “Fabrika İşlevleri ve Üreteçler” 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.
“Fabrika İşlevleri ve Üreteçler” dersinde ne öğreneceğim?
Yapılandırılmış işlev örnekleri üretmek için kapanışları fabrika işlevi olarak kullanın. 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 3. dersidir.
“Fabrika İşlevleri ve Üreteçler” 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
- Upvalue'lar Nedir?
- Kapanışlar Arasında Paylaşılan Upvalue'lar
- Fabrika İşlevleri ve Üreteçler
- Kapanışlarla Notlandırma