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. anmath.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-cAufgabe
EinfachSchreibe zwei Funktionen, die eine beliebige Anzahl von Argumenten annehmen.
- Schreibe
local function sumAll(...: number): number, die{...}mitipairsaufsummiert. - Schreibe
local function joinWords(separator: string, ...: string): string, dietable.concat({...}, separator)zurückgibt. - Gib
sumAll(5, 10, 15)undjoinWords("-", "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
1Erste Schritte mit Luau
Was ist Luau?Warum Luau nutzen?Dein erster Luau-CodeTypprüfung & FehlermodiZusammenfassung: Einführung in Luau4Mit Funktionen arbeiten
Parameter und Rückgabewerte typisierenAnonyme Funktionen typisierenFunktionen ohne RückgabewertOptionale ParameterStandardwerte für ParameterStandardwerte für boolesche WerteFunktionen mit variabler ParameteranzahlFunktionstypen definierenRückblick: typisierte Funktionen7Projekt: Typisierter Aufgabenmanager
Projekt: Die AufgabenstrukturFunktion zum Hinzufügen einer Aufgabe2Grundlegende Typen
Zahl, String und BooleanDer Typ „any“: NotausgangDer Typ „unknown“Nil- und optionale TypenTypinferenz in der PraxisExplizite TypannotationenRückblick: Übung zu grundlegenden Typen5Typ-Aliase, Union-Typen und Schnittmengen-Typen
Typ-Aliase für PrimitivenUnion-TypenArbeiten mit Union-TypenLiterale TypenSchnittmengen-Typen (Intersection Types)Kombination von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen3Typisierte Tabellen: Arrays & Maps
Typisierte ArraysElemente hinzufügen und auslesenWas ist ein Map-Typ?Maps deklarieren und auf Elemente zugreifenTabellen durchlaufenTabellen mit gemischten FormenEin Raster auslesenEin Raster erstellentable.unpackRückblick: Arrays und MapsÜbe selbstständig: Online-Luau-Compiler