Variadische Funktionen
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 27 von 73.
Du hast Luas ... (variable Argumentanzahl) verwendet, um Funktionen zu schreiben, die eine beliebige Anzahl von Argumenten akzeptieren. Luau ermöglicht es dir, die variablen Argumente zu typisieren, sodass jedes eingehende 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 deklariert, dass jedes zusätzliche Argument eine Zahl sein muss: sum(1, "two") wird zu einem Typfehler. Die Laufzeitwerkzeuge sind die, die du bereits kennst:
{...}sammelt die variablen Argumente in einem Array (hier einem{number})select("#", ...)zählt, wie viele Argumente angekommen sind...kann direkt an eine andere Funktion weitergegeben werden, z. B.math.max(...)
Wie in Lua muss ... der letzte Parameter sein: Reguläre (typisierte) Parameter kommen zuerst, der variable Rest nimmt die übrigen Argumente auf:
function joinWords(separator: string, ...: string): string
return table.concat({...}, separator)
end
print(joinWords("-", "a", "b", "c")) -- a-b-cAufgabe
EinfachErstelle eine Funktion namens sumAll, die eine beliebige Anzahl von number-Argumenten (...: number) entgegennimmt und ihre Summe als number zurückgibt.
Erstelle eine Funktion namens countValues, die eine beliebige Anzahl von string-Argumenten entgegennimmt und als number zurückgibt, wie viele übergeben wurden: Verwende select("#", ...).
Erstelle eine Funktion namens joinWords, die einen erforderlichen separator: string gefolgt von einer beliebigen Anzahl von string-Argumenten entgegennimmt und diese mit dem Trennzeichen verbunden zurückgibt (verwende table.concat auf {...}): Rückgabetyp string.
Rufe die folgenden Ausdrücke auf und gib jeden in einer eigenen Zeile aus:
sumAll(5, 10, 15)sumAll(1, 2, 3, 4, 5)countValues("a", "b", "c", "d")joinWords("-", "apple", "banana", "cherry")joinWords(" | ", "red", "green", "blue")
Probier es selbst
-- Schreibe den Code hier
-- sumAll(...: number): number -- Schleife über {...}
-- countValues(...: string): number -- select("#", ...)
-- joinWords(separator: string, ...: string): string
-- dann gib die fünf Ergebnisse aus
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
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 Luau4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von anonymen FunktionenFunktionen ohne RückgabewertOptionale ParameterStandard-ParameterwerteVariadische FunktionenDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen2Grundtypen
Grundlegende Typen: num, str, boolDer Typ 'any': Der AuswegDer Typ 'unknown'Nil- & optionale TypenTypinferenz in der PraxisExplizite TypannotationenZusammenfassung: Praxis zu Grundtypen5Typ-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 ArraysHinzufügen und Lesen von ElementenWas ist ein Map-Typ?Deklarieren und Zugreifen auf MapsIterieren von TabellenGemischt-strukturierte TabellenMehrdimensionale typisierte Arraystable.unpack und VarargsZusammenfassung: Arrays und MapsÜbe selbstständig: Online-Lua-Compiler