Menu
Coddy logo textTech

Variadic Fonksiyonlar (...)

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

Bazen herhangi sayıda bağımsız değişkenle çalışabilen bir işleve ihtiyaç duyarsın. Belki her durum için ayrı işlevler yazmadan iki, üç veya on sayının toplamını hesaplamak istersin. Lua bunun için özel bir söz dizimi sağlar: üç nokta ...

Bir fonksiyonun parametre listesine ... yerleştirdiğinizde, herhangi bir sayıda bağımsız değişken kabul eden değişken sayılı bir fonksiyon hâline gelir:

function sum(...)
    -- Fonksiyon gövdesi
end

Fonksiyonun içinde, bu argümanlara yine ... kullanarak erişebilirsiniz. Onlarla daha kolay çalışmak için, süslü parantezleri kullanarak onları bir tabloya yerleştirebilirsiniz:

function sum(...)
    local args = {...}
    local total = 0
    for i = 1, #args do
        total = total + args[i]
    end
    return total
end

print(sum(5, 10, 15))  -- Çıktı: 30
print(sum(1, 2, 3, 4, 5))  -- Çıktı: 15

{...} ifadesi, işleve aktarılan tüm bağımsız değişkenleri içeren liste tarzı bir tablo oluşturur. Ardından uzunluk işlecini # veya ipairs() kullanarak bu tabloda, diğer tüm tablolarda olduğu gibi yineleme yapabilirsiniz.

challenge icon

Görev

Kolay

Herhangi sayıda sayısal bağımsız değişken kabul eden ve bunların ortalamasını döndüren bir calculateAverage işlevi yazın.

Esnek sayıda bağımsız değişken kabul etmek, bunları bir tabloda toplamak, toplamlarını hesaplamak ve bağımsız değişken sayısına bölmek için değişken bağımsız değişken söz dizimini ... kullanın.

Not: Başlangıç kodu ("Bu koda dokunma" olarak işaretlenmiştir) girdiden sayıları okur, her birini tonumber() kullanarak metinden sayıya dönüştürür ve bunları numbers adlı bir tabloda saklar. Sonunda, unpack(numbers) kullanarak işlevinizi çağırır; bu, tablonun değerlerini ayrı bağımsız değişkenler olarak açar, böylece işleviniz bunları ... olarak alır. Bu kodu ayrıntılı olarak değiştirmeniz veya anlamanız gerekmez; yalnızca calculateAverage işlevini yazmaya odaklanın.

Mantık:

  • Tüm bağımsız değişkenleri {...} kullanarak bir tabloda toplayın
  • Tüm sayıların toplamını hesaplamak için tabloda yineleme yapın
  • Ortalama değeri elde etmek için toplamı bağımsız değişken sayısına bölün
  • Ortalamayı sayı olarak döndürün

Parametreler:

  • ... (sayılar): Değişken sayıda sayısal bağımsız değişken

Döndürür: Sağlanan tüm sayıların ortalaması (sayı)

Kendin dene

-- Bu koda dokunmayın --
local numbers = {}
while true do
    local input = io.read()
    if input == nil or input == "" then
        break
    end
    local num = tonumber(input)
    if num then
        table.insert(numbers, num)
    end
end
-------------------------

function calculateAverage(...)
    -- Buraya kod yazın
end

local average = calculateAverage(unpack(numbers))
print("Average: " .. average)

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