Expressões condicionais
Uma expressão if escolhe um valor sem antes declarar uma variável local mutável:
local label = if available then "ready" else "missing"Ela difere de uma instrução if de três maneiras visíveis:
- cada ramo é uma única expressão;
elseé obrigatório;- não há um
endao final.
A condição deve ser Boolean. Depois das conversões comuns permitidas, os dois ramos devem resultar em um único tipo estático idêntico.
local count: Int8 = if ready then 1 else 0Esse tipo Int8 esperado é propagado para os dois literais inteiros. O compilador rejeita ramos com tipos diferentes, em vez de inventar um tipo comum dinâmico ou uma união implícita:
local invalid = if ready then 1 else "um" -- erro de tipoAvaliação preguiçosa
Seção intitulada “Avaliação preguiçosa”A condição é executada primeiro, e exatamente um ramo é executado:
local divisor = 0local value = if divisor == 0 then 0 else 100 / divisorA divisão não é executada quando divisor é zero. A mesma avaliação preguiçosa se aplica durante a avaliação em tempo de compilação e a execução nativa.
Expressões condicionais podem ser aninhadas na posição de else:
local label = if score > 89 then "excelente" else if score > 59 then "aprovado" else "tente novamente"Use a instrução elseif quando cada ramo contiver instruções. Pop não usa a pontuação ?:.
