Standard-Parameterwerte
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy — Lektion 26 von 73.
Optionale Parameter hinterlassen ein nil, das behandelt werden muss. Oft ist das, was Sie eigentlich wollen, ein Ersatzwert (Fallback) — „wenn der Aufrufer nichts angibt, nimm X“. Luau hat keine Default-Syntax in der Signatur (es gibt kein greeting: string = "Hello"); stattdessen verwenden Sie das klassische Lua-Idiom (idiom), jetzt mit Typen:
function greet(name: string, greeting: string?): string
greeting = greeting or "Hello"
return `{greeting}, {name}`
end
print(greet("Alice")) -- Hallo, Alice
print(greet("Alice", "Howdy")) -- Howdy, AliceDer Parameter ist als optional annotiert (string?), und die erste Zeile des Funktionskörpers ersetzt nil durch den Standardwert (default). Das funktioniert, weil nil als falsch (falsy) gewertet wird — nil or "Hello" ergibt "Hello". Nach dieser Zeile weiß die Typprüfung, dass greeting nicht mehr nil sein kann.
Eine Einschränkung, die Sie aus Lua kennen: or ersetzt auch false! Bei einem boolean?-Parameter würde flag = flag or true ein explizites (explicit) false stillschweigend überschreiben. Verwenden Sie stattdessen eine explizite nil-Prüfung (check):
function ship(weight: number, expedited: boolean?): number
if expedited == nil then
expedited = false
end
-- ...
endAufgabe
EinfachErstelle eine Funktion namens calculateTax, die price: number (erforderlich) und rate: number? mit dem Standardwert 0.05 entgegennimmt. Gib den Steuerbetrag (price * rate) als number zurück.
Erstelle eine Funktion namens formatGreeting, die name: string (erforderlich) und timeOfDay: string? mit dem Standardwert "Hello" entgegennimmt. Gib "[timeOfDay], [name]!" als string zurück.
Erstelle eine Funktion namens calculateShipping, die weight: number, distance: number (beide erforderlich) und expedited: boolean? mit dem Standardwert false entgegennimmt — verwende für diese einen expliziten nil-Prüfschritt! Berechne (weight * 0.5) + (distance * 0.1), und wenn expedited true ist, multipliziere das Ergebnis mit 2. Gib eine number zurück.
Rufe folgende Funktionen auf und gib die Ergebnisse jeweils in einer eigenen Zeile aus:
calculateTax(100)calculateTax(200, 0.08)formatGreeting("Alice")formatGreeting("Bob", "Good morning")calculateShipping(5, 100)calculateShipping(3, 50, true)
Probier es selbst
-- Schreibe hier den Code
-- calculateTax(price: number, rate: number?) -- Standardrate 0.05
-- formatGreeting(name: string, timeOfDay: string?) -- Standard "Hello"
-- calculateShipping(weight, distance, expedited: boolean?) -- Standard false
-- dann gib die sechs 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