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 sayıda bağımsız değişken kabul eden işlevler yazmak için Lua'nın ... (varargs) özelliğini kullandınız. Luau, varargs türünü belirtmenize (type) olanak tanır, böylece gelen her bağımsız değişken kontrol edilir:

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 ifadesi, 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ı bildiğiniz araçlardır:

  • {...} varargs değerlerini bir dizi içinde toplar (burada bir {number})
  • select("#", ...) kaç bağımsız değişkenin geldiğini sayar
  • ... doğrudan başka bir işleve aktarılabilir, örn. math.max(...)

Lua'da olduğu gibi, ... son parametre olmalıdır — normal (türü belirtilmiş) parametreler önce gelir, variadic tail geri kalanını 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 bir sayıda number türünde bağımsız değişken (...: number) alan ve bunların toplamını bir number olarak döndüren sumAll adında bir işlev oluşturun.

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

Gerekli bir separator: string ve ardından herhangi bir sayıda string türünde bağımsız değişken alan ve bunları ayırıcı ile birleştirilmiş olarak döndüren ({...} üzerinde table.concat kullanın) joinWords adında bir işlev oluşturun — dönüş türü string olmalıdır.

Her biri ayrı bir satırda olacak şekilde çağırın ve 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

-- Kodu buraya 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