Menu
Coddy logo textTech

Anonim Fonksiyonlar

Coddy'nin Lua Journey'sinin Logic & Flow bölümünün bir parçası — ders 13 / 54.

Artık fonksiyonların değişkenlerde saklanabileceğini ve aktarılabileceğini anladığınıza göre, onları yazmanın daha da kısa bir yolu var. Bir fonksiyona her zaman bir isim vermek yerine, onu doğrudan ihtiyacınız olan yerde oluşturabilirsiniz; bunlara anonim fonksiyonlar (anonymous functions) denir.

Anonim bir fonksiyon, basitçe ismi olmayan bir fonksiyondur. Bunu, function anahtar kelimesini ve hemen ardından parametrelerini ve gövdesini kullanarak tanımlarsınız:

function(a, b)
    return a + b
end

Bu, hemen kullanılabilecek bir fonksiyon değeri oluşturur. Anonim fonksiyonlar, fonksiyonları diğer fonksiyonlara argüman olarak geçirirken özellikle yararlıdır. Daha önceki özel sıralama örneğini hatırlıyor musunuz? İşte anonim bir fonksiyonla nasıl göründüğü:

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 isimlendirilmiş fonksiyon tanımlamak yerine, fonksiyon doğrudan table.sort() fonksiyonunun ikinci argümanı olarak oluşturulur. Bu, kodu daha kompakt hale getirir ve sıralama mantığını tam olarak kullanıldığı yerde tutar.

challenge icon

Görev

Kolay

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 filterByThreshold fonksiyonu yazın.

Sayıları filtrelemek için anonim fonksiyon yaklaşımıyla table.insert() kullanın. Filtreleme mantığını ayrı bir isimlendirilmiş fonksiyon tanımlamadan satır içinde (inline) oluşturun.

Mantık:

  • Boş bir sonuç tablosu oluşturun
  • Sayılar tablosu üzerinde döngü kurun
  • Her sayı için, eşiği aşıp aşmadığını kontrol etmek üzere bir anonim fonksiyon kullanın
  • Kontrol true dönerse, sayıyı sonuç tablosuna ekleyin
  • Filtrelenmiş sonuç tablosunu döndürün

Parametreler:

  • numbers (table): Sayısal değerler içeren liste stilinde 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)

Kopya kağıdı

Anonim bir fonksiyon, function anahtar kelimesi kullanılarak, ardından parametreler ve gövde gelecek şekilde tanımlanan, ismi olmayan bir fonksiyondur:

function(a, b)
    return a + b
end

Anonim fonksiyonlar, fonksiyonları argüman olarak geçirirken mantığı kullanıldığı yerde satır içi tutarak kolaylık sağlar:

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)

Bu, karşılaştırma fonksiyonunu doğrudan table.sort() fonksiyonuna bir argüman olarak oluşturarak kodu daha kompakt hale getirir.

Kendin dene

function filterByThreshold(numbers, threshold)
    -- Kodunuzu 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.

Logic & Flow bölümündeki tüm dersler