Birinci Sınıf Değer Olarak Fonksiyonlar
Coddy'nin Lua Journey'sinin Logic & Flow bölümünün bir parçası — ders 12 / 54.
Lua'da fonksiyonlar, yalnızca görevleri yerine getiren kod bloklarından daha fazlasıdır; herhangi bir veri türü gibi değerlendirilebilen değerlerdir. Bu, fonksiyonlarla tıpkı sayılar, dizeler veya tablolarla çalıştığınız şekilde çalışabileceğiniz anlamına gelir.
Bir fonksiyonu bir değişkende saklayabilirsiniz:
local greet = function()
print("Hello!")
end
greet() -- Çıktı: Hello!Burada, fonksiyon greet değişkenine atanır ve onu tıpkı normal bir fonksiyon gibi çağırabilirsiniz. Bu, kodunuzu nasıl yapılandıracağınız konusunda güçlü olanaklar sunar.
Fonksiyonlar diğer fonksiyonlara argüman olarak da aktarılabilir. Bu, bir fonksiyonun başka bir fonksiyonda tanımlanan davranışı kullanmasını istediğinizde özellikle yararlıdır:
function executeAction(action)
action()
end
local sayHello = function()
print("Hello from a function!")
end
executeAction(sayHello) -- Çıktı: Hello from a function!Bu örnekte, executeAction bir fonksiyonu parametre olarak alır ve onu çağırır. sayHello fonksiyonu, tıpkı bir sayı veya dize geçirir gibi geçirilir.
Fonksiyonlar başka fonksiyonlar bile döndürebilir. Bu, belirli koşullara veya parametrelere bağlı olarak dinamik olarak fonksiyonlar oluşturmanıza olanak tanır:
function createMultiplier(factor)
return function(number)
return number * factor
end
end
local double = createMultiplier(2)
print(double(5)) -- Çıktı: 10Görev
Kolaya, b ve operation parametrelerini alan ve bu iki sayıya işlem fonksiyonunu uygulamanın sonucunu döndüren bir applyOperation fonksiyonu yazın.
operation parametresi, a ve b argümanları ile çağrılacak bir fonksiyon içeren bir tablodur.
Mantık:
"func"anahtarını kullanarakoperationtablosundan fonksiyonu çıkarın- Bu fonksiyonu
avebargümanları ile çağırın - Sonucu döndürün
Parametreler:
a(sayı): Birinci sayıb(sayı): İkinci sayıoperation(tablo):"func"anahtarında saklanan bir fonksiyon içeren tablo
Döndürdüğü Değer: İşlem fonksiyonunun a ve b ile çağrılmasının sonucu (sayı)
Kopya kağıdı
Lua'da fonksiyonlar; değişkenlerde saklanabilen, argüman olarak aktarılabilen ve diğer fonksiyonlardan döndürülebilen birinci sınıf değerlerdir.
Bir fonksiyonu bir değişkende saklayın:
local greet = function()
print("Hello!")
end
greet() -- Çıktı: Hello!Bir fonksiyonu argüman olarak aktarın:
function executeAction(action)
action()
end
local sayHello = function()
print("Hello from a function!")
end
executeAction(sayHello) -- Çıktı: Hello from a function!Bir fonksiyonu başka bir fonksiyondan döndürün:
function createMultiplier(factor)
return function(number)
return number * factor
end
end
local double = createMultiplier(2)
print(double(5)) -- Çıktı: 10Kendin dene
function applyOperation(a, b, operation)
-- Kodunuzu buraya yazın
end
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Logic & Flow bölümündeki tüm dersler
1İleri Düzey Tablo Yineleme
pairs() ile Yinelemeipairs() ile Yinelemepairs() vs. ipairs()Özet - Karakter Sayfası2Daha Fazla Tablo Kütüphanesi Fonksiyonu
table.concat()Tablo Oluşturma ve unpack()table.sort()Fonksiyonlar ile Özel SıralamaÖzet - Yüksek Skor Tablosu3İleri Düzey Fonksiyon Kavramları
Birden Fazla Değer DöndürmeVariadic Fonksiyonlar (...)Birinci Sınıf Değer Olarak FonksiyonlarAnonim FonksiyonlarClosure Nedir?Özet - Basit Event Handler