Menu
Coddy logo textTech

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, Alice

Der 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
    -- ...
end
challenge icon

Aufgabe

Einfach

Erstelle 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:

  1. calculateTax(100)
  2. calculateTax(200, 0.08)
  3. formatGreeting("Alice")
  4. formatGreeting("Bob", "Good morning")
  5. calculateShipping(5, 100)
  6. 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
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

Übe selbstständig: Online-Lua-Compiler