Optionale Parameter
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 25 von 73.
In einfachem Lua konntest du Argumente immer weglassen: Die fehlenden wurden stillschweigend zu nil, und nicht daran zu denken, damit umzugehen, war eine klassische Fehlerquelle. Luau macht diese Möglichkeit ausdrücklich: Füge ? zum Typ eines Parameters hinzu, um ihn als optional zu kennzeichnen.
function greet(name: string, title: string?): string
if title then
return `{title} {name}`
end
return `Hello, {name}`
end
print(greet("Ada")) -- Hallo, Ada
print(greet("Ada", "Dr.")) -- Dr. Adastring? bedeutet „string oder nil“. Aufrufer können einen String übergeben oder das Argument vollständig weglassen; Parameter ohne ? sind erforderlich, und der Checker markiert Aufrufe, bei denen sie weggelassen werden.
Innerhalb der Funktion kann ein optionaler Parameter nil sein. Prüfe ihn daher, bevor du ihn verwendest: if title then ... end ist das übliche Muster. Überspringst du die Prüfung und verkettest nil mit einem String, erhältst du denselben Laufzeitfehler, den Lua dir schon immer geliefert hat; der Typ-Checker warnt dich vorher.
Aufgabe
EinfachErstelle eine Funktion namens createUserProfile, die username: string (erforderlich) und displayName: string? (optional) entgegennimmt und einen string zurückgibt:
- Wenn beide angegeben sind, gib Folgendes zurück:
"Profile: [displayName] (@[username])" - Wenn nur der Benutzername angegeben ist, gib Folgendes zurück:
"Profile: @[username]"
Erstelle eine Funktion namens calculateDiscount, die price: number (erforderlich) und membershipLevel: string? (optional) entgegennimmt und eine number zurückgibt:
- Wenn eine Mitgliedschaftsstufe angegeben ist, gib den um 10 % reduzierten Preis zurück (multipliziere mit
0.9). - Andernfalls gib den Preis unverändert zurück.
Rufe die folgenden Funktionen auf und gib jedes Ergebnis in einer eigenen Zeile aus:
createUserProfile("john_doe", "John Doe")createUserProfile("jane_smith")calculateDiscount(100, "premium")calculateDiscount(75)
Probier es selbst
-- Schreibe hier den Code
-- createUserProfile(username: string, displayName: string?): string
-- calculateDiscount(price: number, membershipLevel: string?): number
-- dann gib die vier 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