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

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

Aufgabe

Einfach

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

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