Anonim Fonksiyonlar
Coddy'nin Lua Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 13 / 54.
Artık işlevlerin değişkenlerde saklanabildiğini ve aktarılabildiğini anladığına göre, onları yazmanın daha da kısa bir yolu var. Bir işlevi her zaman adlandırmak yerine, onu doğrudan ihtiyaç duyduğun yerde oluşturabilirsin. Bunlara anonim işlevler denir.
Anonim bir işlev, basitçe adı olmayan bir işlevdir. Bu işlevi, hemen ardından parametreleri ve gövdesi gelen function anahtar sözcüğünü kullanarak tanımlarsınız:
function(a, b)
return a + b
endBu, hemen kullanılabilecek bir işlev değeri oluşturur. Anonim işlevler, işlevleri diğer işlevlere bağımsız değişken olarak geçirirken özellikle kullanışlıdır. Önceki özel sıralama örneğini hatırlıyor musun? Anonim bir işlevle şöyle görünür:
local players = {
{name = "Alice", score = 150},
{name = "Bob", score = 200},
{name = "Charlie", score = 175}
}
table.sort(players, function(a, b)
return a.score > b.score
end)Karşılaştırma için ayrı bir adlandırılmış işlev tanımlamak yerine, işlev doğrudan table.sort() işlevine ikinci bağımsız değişken olarak oluşturulur. Bu, kodu daha kısa hâle getirir ve sıralama mantığını kullanıldığı yerde tutar.
Görev
Kolaynumbers ve threshold alan ve yalnızca eşikten büyük sayıları içeren yeni bir tablo döndüren filterByThreshold işlevini yazın.
Sayıları filtrelemek için anonim işlev yaklaşımıyla table.insert() kullanın. Ayrı bir adlandırılmış işlev tanımlamadan filtreleme mantığını satır içinde oluşturun.
Mantık:
- Boş bir sonuç tablosu oluşturun
- Sayılar tablosu üzerinde yineleme yapın
- Her sayı için, eşiği aşıp aşmadığını kontrol etmek üzere anonim bir işlev kullanın
- Kontrol true döndürürse sayıyı sonuç tablosuna ekleyin
- Filtrelenmiş sonuç tablosunu döndürün
Parametreler:
numbers(table): Sayısal değerler içeren liste tarzı bir tablothreshold(number): Filtreleme için minimum değer (hariç)
Döndürür: Yalnızca eşikten büyük sayıları içeren bir tablo (table)
Kendin dene
function filterByThreshold(numbers, threshold)
-- 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