Menu
CoddyTech

Anonim Fonksiyonlar

Coddy'nin Lua Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 13 / 54.

Artık fonksiyonların değişkenlerde saklanabildiğini ve aktarılabildiğini anladığına göre, onları yazmanın daha da kısa bir yolu var. Bir fonksiyona her zaman bir ad vermek yerine, onu doğrudan ihtiyaç duyduğun yerde oluşturabilirsin. Bunlara anonim fonksiyonlar denir.

Anonim bir fonksiyon, adı olmayan bir fonksiyondur. Onu, hemen ardından parametrelerini ve gövdesini yazarak function anahtar sözcüğünü kullanarak tanımlarsın:

function(a, b)
    return a + b
end

Bu, hemen kullanılabilen bir fonksiyon değeri oluşturur. Anonim fonksiyonlar, fonksiyonları diğer fonksiyonlara argüman olarak geçirirken özellikle kullanışlıdır. Önceki özel sıralama örneğini hatırlıyor musun? Anonim bir fonksiyonla şö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ı, adlandırılmış bir işlev tanımlamak yerine, işlev doğrudan table.sort() işlevinin ikinci argümanı olarak oluşturulur. Bu, kodu daha kısa hale getirir ve sıralama mantığını kullanıldığı yerde tutar.

challenge icon

Görev

Kolay

filterByThreshold adlı, numbers ve threshold parametrelerini alan ve yalnızca eşik değerinden büyük sayıları içeren yeni bir tablo döndüren bir fonksiyon yazın.

Düzenleyicide zaten bir yardımcı fonksiyon var: filter(list, keep). Bu fonksiyon her değer için keep(value) çağrısı yapar ve keep fonksiyonunun true döndürdüğü değerleri içeren yeni bir tablo döndürür. filter fonksiyonunu çağırın ve kontrolü, derste table.sort() fonksiyonuna bir fonksiyon geçirildiği gibi, doğrudan çağrının içinde yazılmış anonim bir fonksiyon olarak geçirin. Kontrolü bir değişkende saklamayın veya ona bir ad vermeyin.

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şik değerinden büyük sayıları içeren bir tablo (table)

Kendin dene

local function filter(list, keep)
    local result = {}
    for _, value in ipairs(list) do
        if keep(value) then
            table.insert(result, value)
        end
    end
    return result
end

function filterByThreshold(numbers, threshold)
    -- Kodu buraya yazın
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