Menu
Coddy logo textTech

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
end

Bu, 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.

challenge icon

Görev

Kolay

numbers 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 tablo
  • threshold (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
quiz iconKendini test et

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

Kendi başına pratik yap: Online Lua derleyicisi