Menu
CoddyTech

Valores predeterminados para booleanos

Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 28 de 80.

Una salvedad que ya conoces de Lua: or también reemplaza false. Para un parámetro boolean? cuyo valor predeterminado debería ser true, flag = flag or true convierte un false explícito en true, porque false or true es true:

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

En su lugar, usa una comprobación explícita de nil. Esta asigna el valor predeterminado solo cuando se omitió el argumento:

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

Para cadenas y números, or es seguro, ya que solo nil y false son falsos.

challenge icon

Desafío

Fácil

Asigna al parámetro booleano el valor predeterminado true, que false no pueda anular.

  1. Escribe local function shippingCost(weight: number, insured: boolean?): number.
  2. Empieza con if insured == nil then insured = true end.
  3. Devuelve weight * 0.5 + 2 cuando insured sea true; en caso contrario, weight * 0.5.
  4. Imprime shippingCost(4) y shippingCost(4, false).

Pulsa Ejecutar código: la salida termina con 4 y 2.

Pruébalo tú mismo

-- Valor predeterminado mediante el patrón `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))

Todas las lecciones de Introducción a Luau

Practica por tu cuenta: Compilador de Luau online