Menu
CoddyTech

Valores padrão para booleanos

Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 28 de 80.

Uma ressalva que você conhece do Lua: or também substitui false. Para um parâmetro boolean? que deve ter como padrão true, flag = flag or true transforma um false explícito em true, porque false or true é true:

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

Em vez disso, use uma verificação explícita de nil. Ela preenche o valor padrão somente quando o argumento não foi informado:

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 strings e números, or é seguro, já que somente nil e false são valores falsos.

challenge icon

Desafio

Fácil

Dê ao parâmetro booleano um valor padrão de true que false não possa desfazer.

  1. Escreva local function shippingCost(weight: number, insured: boolean?): number.
  2. Comece com if insured == nil then insured = true end.
  3. Retorne weight * 0.5 + 2 quando insured for verdadeiro; caso contrário, weight * 0.5.
  4. Imprima shippingCost(4) e shippingCost(4, false).

Pressione Executar código: a saída termina com 4 e 2.

Experimente você mesmo

-- Valor padrão por meio do padrão `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 as lições de Introdução ao Luau

Pratique por conta própria: Compilador de Luau online