Menu
CoddyTech

Wartości domyślne dla typów Boolean

Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 28 z 80.

Jest tu jednak pewien haczyk znany z Lua: or zastępuje również false. W przypadku parametru boolean?, który domyślnie powinien mieć wartość true, zapis flag = flag or true zmienia jawnie przekazane false na true, ponieważ false or true daje true:

local function sendAlert(message: string, loud: boolean?)
    loud = loud or true   -- sendAlert("Hi", false) nadal otrzymuje true
    print(message, loud)
end

Zamiast tego użyj jawnego sprawdzenia wartości nil. Wartość domyślna zostanie przypisana tylko wtedy, gdy argument nie został podany:

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

W przypadku ciągów znaków i liczb operator or jest bezpieczny, ponieważ tylko nil i false są traktowane jako fałsz.

challenge icon

Wyzwanie

Łatwy

Ustaw domyślną wartość parametru logicznego na true, tak aby false nie mogło jej zmienić.

  1. Napisz local function shippingCost(weight: number, insured: boolean?): number.
  2. Rozpocznij funkcję od if insured == nil then insured = true end.
  3. Zwróć weight * 0.5 + 2, gdy insured ma wartość true, a w przeciwnym razie weight * 0.5.
  4. Wyświetl shippingCost(4) i shippingCost(4, false).

Naciśnij Uruchom kod: wynik kończy się na 4 i 2.

Spróbuj swoich sił

-- Wartość domyślna z użyciem idiomu `or`
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))

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online