Standard-Parameterwerte
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 26 von 73.
Optionale Parameter hinterlassen dir ein nil, das du behandeln musst. Oft möchtest du eigentlich einen Ersatzwert: „wenn der Aufrufer nichts angegeben hat, nimm X an“. Luau hat keine Standardsyntax in der Signatur (es gibt kein greeting: string = "Hello"); stattdessen verwendest du das klassische Lua-Idioms, jetzt mit Typen:
function greet(name: string, greeting: string?): string
greeting = greeting or "Hello"
return `{greeting}, {name}`
end
print(greet("Alice")) -- Hello, 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. Das funktioniert, weil nil falsy ist: nil or "Hello" ergibt "Hello". Nach dieser Zeile weiß der Checker, dass greeting nicht mehr nil sein kann.
Eine Besonderheit, die du aus Lua kennst: or ersetzt auch false! Bei einem boolean?-Parameter würde flag = flag or true ein ausdrücklich angegebenes false stillschweigend überschreiben. Verwende stattdessen eine explizite Nil-Prüfung:
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? entgegennimmt, mit dem Standardwert 0.05. Gib den Steuerbetrag (price * rate) als number zurück.
Erstelle eine Funktion namens formatGreeting, die name: string (erforderlich) und timeOfDay: string? entgegennimmt, mit dem Standardwert "Hello". 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 hierfür eine explizite nil-Prüfung! Berechne (weight * 0.5) + (distance * 0.1) und multipliziere das Ergebnis mit 2, wenn expedited true ist. Gib einen number zurück.
Rufe die 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 Code hier
-- 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Übe selbstständig: Online-Lua-Compiler