Menu
Coddy logo textTech

Optionale Parameter

Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy — Lektion 25 von 73.

In reinem Lua konnte man Argumente immer weglassen — die fehlenden wurden stillschweigend zu nil, und dies zu behandeln zu vergessen war eine klassische Fehlerquelle. Luau macht diese Möglichkeit explizit: Füge ? zum Typ eines Parameters hinzu, um ihn als optional zu markieren.

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. Ada

string? liest sich als "string oder nil". Aufrufer können einen String übergeben oder das Argument komplett weglassen; Parameter ohne ? sind erforderlich, und der Type-Checker markiert Aufrufe, die diese auslassen.

Innerhalb der Funktion kann ein optionaler Parameter nil sein, also check ihn vor der using-Verwendung — if title then ... end ist das Standardmuster. Überspringe die Prüfung und verknüpfe nil mit einem String, und du erhältst denselben Laufzeitfehler, den Lua schon immer ausgegeben hat; der Type-Checker warnt dich vorher.

challenge icon

Aufgabe

Einfach

Erstelle eine Funktion namens createUserProfile, die username: string (erforderlich) und displayName: string? (optional) entgegennimmt und einen string zurückgibt:

  • Wenn beide angegeben sind, gib zurück: "Profile: [displayName] (@[username])"
  • Wenn nur der Benutzername angegeben ist, gib zurück: "Profile: @[username]"

Erstelle eine Funktion namens calculateDiscount, die price: number (erforderlich) und membershipLevel: string? (optional) entgegennimmt und einen number zurückgibt:

  • Wenn ein Mitgliedschafts-Level angegeben ist, gib den um 10% reduzierten Preis zurück (multipliziere mit 0.9)
  • Andernfalls gib den Preis unverändert zurück

Rufe folgendes auf und gib es jeweils in einer eigenen Zeile aus:

  1. createUserProfile("john_doe", "John Doe")
  2. createUserProfile("jane_smith")
  3. calculateDiscount(100, "premium")
  4. 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
quiz iconTeste dich selbst

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