Menu
CoddyTech

Standardwerte für boolesche Werte

Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 28 von 80.

Eine Einschränkung kennst du bereits aus Lua: or ersetzt auch false. Bei einem boolean?-Parameter, der standardmäßig true sein soll, macht flag = flag or true aus einem ausdrücklich angegebenen false ein true, denn false or true ist true:

local function sendAlert(message: string, loud: boolean?)
    loud = loud or true   -- sendAlert("Hi", false) erhält trotzdem true
    print(message, loud)
end

Verwende stattdessen eine explizite nil-Prüfung. So wird der Standardwert nur eingesetzt, wenn das Argument weggelassen wurde:

local function sendAlert(message: string, loud: boolean?)
    if loud == nil then
        loud = true
    end
    print(message, loud)
end

sendAlert("Hi")         -- Hi  true
sendAlert("Hi", false)  -- Hi  false

Für Zeichenketten und Zahlen ist or sicher, da nur nil und false falsy sind.

challenge icon

Aufgabe

Einfach

Gib einem booleschen Parameter den Standardwert true, den ein false nicht aufheben kann.

  1. Schreibe local function shippingCost(weight: number, insured: boolean?): number.
  2. Beginne die Funktion mit if insured == nil then insured = true end.
  3. Gib weight * 0.5 + 2 zurück, wenn insured true ist, andernfalls weight * 0.5.
  4. Gib shippingCost(4) und shippingCost(4, false) aus.

Klicke auf Run Code: Die Ausgabe endet mit 4 und 2.

Probier es selbst

-- Standardwert mithilfe des `or`-Idioms
local function calculateTax(price: number, rate: number?): number
    rate = rate or 0.05
    return price * rate
end

print(calculateTax(100))
print(calculateTax(200, 0.08))

Alle Lektionen in Einführung in Luau

Übe selbstständig: Online-Luau-Compiler