Menu
CoddyTech

Funktionen mit variabler Parameteranzahl

Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 29 von 80.

Du hast Lua-... (Varargs) verwendet, um Funktionen zu schreiben, die eine beliebige Anzahl von Argumenten akzeptieren. In Luau kannst du die Varargs typisieren, sodass jedes übergebene Argument überprüft wird:

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 legt fest, dass jedes zusätzliche Argument eine Zahl sein muss: sum(1, "two") wird zu einem Typfehler. Die Laufzeitwerkzeuge kennst du bereits:

  • {...} sammelt die Varargs in einem Array (hier ein {number})
  • select("#", ...) zählt, wie viele Argumente übergeben wurden
  • ... kann direkt an eine andere Funktion weitergegeben werden, z. B. an math.max(...)

Wie in Lua muss ... der letzte Parameter sein: Reguläre (typisierte) Parameter kommen zuerst, der variadische Rest sammelt die übrigen Argumente:

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

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

Aufgabe

Einfach

Schreibe zwei Funktionen, die eine beliebige Anzahl von Argumenten annehmen.

  1. Schreibe local function sumAll(...: number): number, die {...} mit ipairs aufsummiert.
  2. Schreibe local function joinWords(separator: string, ...: string): string, die table.concat({...}, separator) zurückgibt.
  3. Gib sumAll(5, 10, 15) und joinWords("-", "apple", "banana", "cherry") aus.

Klicke auf Run Code: Die Ausgabe zeigt 30 und apple-banana-cherry.

Probier es selbst

-- 1) sumAll(...: number): number
-- 2) joinWords(separator: string, ...: string): string
-- 3) Gib die beiden Ergebnisse aus

Alle Lektionen in Einführung in Luau

Übe selbstständig: Online-Luau-Compiler