Menu
Coddy logo textTech

Değişken Sayıda Parametre Alan Fonksiyonlar (Variadic)

Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 27 / 73.

Herhangi bir sayıda bağımsız değişken kabul eden işlevler yazmak için Lua'nın ... (değişken sayıda bağımsız değişken) özelliğini kullandın. Luau, değişken sayıdaki bağımsız değişkenleri türlendirmeni sağlar; böylece aktarılan her bağımsız değişken denetlenir:

function sum(...: number): number
    local total = 0
    for _, n in ipairs({...}) do
        total = total + n
    end
    return total
end

print(sum(1, 2))           -- 3
print(sum(1, 2, 3, 4, 5))  -- 15

...: number, her ek bağımsız değişkenin bir sayı olması gerektiğini bildirir: sum(1, "two") bir tür hatasına dönüşür. Çalışma zamanı araçları, bildiklerinle aynıdır:

  • {...}, değişken sayıdaki bağımsız değişkenleri bir dizi içinde toplar (burada bir {number})
  • select("#", ...), kaç bağımsız değişken geldiğini sayar
  • ..., başka bir işleve doğrudan aktarılabilir; örneğin math.max(...)

Lua'da olduğu gibi ... son parametre olmalıdır: normal (türlü) parametreler önce gelir, değişken sayıda bağımsız değişken alan kuyruk geri kalanları toplar:

function joinWords(separator: string, ...: string): string
    return table.concat({...}, separator)
end

print(joinWords("-", "a", "b", "c"))  -- a-b-c
challenge icon

Görev

Kolay

Herhangi sayıda number bağımsız değişken alan ve bunların toplamını number olarak döndüren sumAll adlı bir işlev oluşturun (...: number).

Herhangi sayıda string bağımsız değişken alan ve kaç tanesinin aktarıldığını belirten, number türünde bir değer döndüren countValues adlı bir işlev oluşturun: select("#", ...) kullanın.

Önce gerekli bir separator: string, ardından herhangi sayıda string bağımsız değişken alan ve bunları ayırıcıyla birleştirerek döndüren joinWords adlı bir işlev oluşturun ({...} üzerinde table.concat kullanın): dönüş türü string olmalıdır.

Her birini kendi satırında çağırıp yazdırın:

  1. sumAll(5, 10, 15)
  2. sumAll(1, 2, 3, 4, 5)
  3. countValues("a", "b", "c", "d")
  4. joinWords("-", "apple", "banana", "cherry")
  5. joinWords(" | ", "red", "green", "blue")

Kendin dene

-- Buraya kod yazın
-- sumAll(...: number): number       -- {...} üzerinde döngü
-- countValues(...: string): number  -- select("#", ...)
-- joinWords(separator: string, ...: string): string
-- sonra beş sonucu yazdır
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Luau'ya Giriş bölümündeki tüm dersler

Kendi başına pratik yap: Online Lua derleyicisi