Birinci Sınıf Değer Olarak Fonksiyonlar
Coddy'nin Lua Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 12 / 54.
Lua'da fonksiyonlar, görevleri gerçekleştiren basit kod bloklarından daha fazlasıdır. Bunlar, diğer tüm veri türleri gibi ele alınabilen değerlerdir. Bu, fonksiyonlarla sayılar, dizeler veya tablolarla çalıştığınız şekilde çalışabileceğiniz anlamına gelir.
Bir işlevi bir değişkende saklayabilirsin:
local greet = function()
print("Hello!")
end
greet() -- Çıktı: Hello!Burada, işlev greet değişkenine atanır ve onu tıpkı normal bir işlev gibi çağırabilirsiniz. Bu, kodunuzu yapılandırma biçiminiz için güçlü olanaklar sunar.
Fonksiyonlar, diğer fonksiyonlara bağımsız değişken olarak da geçirilebilir. Bu, özellikle bir fonksiyonun başka bir fonksiyonda tanımlanan davranışı kullanmasını istediğinizde 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, parametre olarak bir fonksiyon alır ve onu çağırır. sayHello fonksiyonu, tıpkı bir sayı veya dize aktaracağınız gibi aktarılır.
Fonksiyonlar başka fonksiyonlar da döndürebilir. Bu, belirli koşullara veya parametrelere göre 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 alan ve işlem fonksiyonunu iki sayıya uygulamanın sonucunu döndüren bir applyOperation fonksiyonu yazın.
operation parametresi, a ve b bağımsız değişkenleriyle çağrılacak bir fonksiyon içeren bir tablodur.
Mantık:
operationtablosundan"func"anahtarını kullanarak fonksiyonu çıkarın- Bu fonksiyonu
avebbağımsız değişkenleriyle çağırın - Sonucu döndürün
Parametreler:
a(number): İlk sayıb(number): İkinci sayıoperation(table):"func"anahtarında depolanan bir fonksiyon içeren tablo
Döndürür: İşlem fonksiyonunun a ve b ile çağrılmasının sonucu (number)
Kendin dene
function applyOperation(a, b, operation)
-- Kodu buraya yaz
end
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış 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 HandlerKendi başına pratik yap: Online Lua derleyicisi