Instruções if, elseif e else
Escreva lógica de ramificação condicional com a sintaxe if/elseif/else do Lua.
Instruções if, elseif e else é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Lua Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Lua Academy inclui 4 aulas no total.
Instrução if básica
A instrução if avalia uma condição e executa seu bloco quando a condição é verdadeira. Em Lua, somente false e nil são falsos; todo o restante — incluindo 0 e "" — é verdadeiro. Encerre o bloco com end.
local score = 85
if score >= 90 then
print("A grade")
end
if score >= 60 then
print("Passing") -- prints
end
if 0 then
print("0 is truthy!") -- prints in Lua
endif/elseif/else
Encadeie várias condições com elseif e forneça uma alternativa com else. Lua avalia as condições de cima para baixo e executa somente o primeiro ramo correspondente. Diferentemente de switch/case em outras linguagens, o elseif de Lua é uma única palavra-chave (não else if).
local score = 75
if score >= 90 then
print("A")
elseif score >= 80 then
print("B")
elseif score >= 70 then
print("C") -- prints
elseif score >= 60 then
print("D")
else
print("F")
endOperadores lógicos em condições
Lua usa and, or e not como operadores lógicos. Eles usam avaliação em curto-circuito: and retorna o primeiro valor falso ou o último valor; or retorna o primeiro valor verdadeiro ou o último valor. Isso permite padrões idiomáticos de valor padrão.
local age = 25
local hasID = true
if age >= 18 and hasID then
print("Entry allowed")
end
-- or for defaults
local name = nil
local display = name or "Guest"
print(display) -- GuestPadrão ternário com and/or
Lua não tem um operador ternário, mas o padrão and/or fornece uma aproximação: condition and trueVal or falseVal. Isso funciona desde que trueVal não seja false nem nil. Para uma lógica ternária mais segura, use uma função if em linha.
local x = 10
local label = (x > 5) and "big" or "small"
print(label) -- big
-- Safe ternary function
local function ternary(cond, t, f)
if cond then return t else return f end
end
print(ternary(false, "yes", "no")) -- noInstruções if aninhadas
Você pode aninhar instruções if dentro de outros ramos. Cada bloco aninhado exige seu próprio end. Um aninhamento profundo geralmente indica uma oportunidade de usar retornos antecipados ou cláusulas de guarda para simplificar a lógica.
local loggedIn = true
local isAdmin = false
if loggedIn then
if isAdmin then
print("Admin dashboard")
else
print("User dashboard") -- prints
end
else
print("Login required")
endCláusulas de guarda
Uma cláusula de guarda é um retorno antecipado que trata casos inválidos ou extremos no início de uma função, reduzindo o aninhamento. Esse padrão mantém o código do "caminho feliz" sem indentação adicional e mais fácil de ler.
local function processAge(age)
if type(age) ~= "number" then
return nil, "age must be a number"
end
if age < 0 then
return nil, "age cannot be negative"
end
-- happy path
return math.floor(age)
end
print(processAge(25.7)) -- 25
print(processAge(-1)) -- nil age cannot be negativeComparação de valores
Operadores de comparação de Lua: == (igual), ~= (diferente), <, >, <=, >=. Observação: ~= é o operador de "diferente" de Lua — não !=. As comparações de strings usam ordem lexicográfica. Não é possível comparar strings diretamente com números.
print(1 == 1) -- true
print(1 ~= 2) -- true
print("abc" < "abd") -- true (lexicographic)
print("10" == 10) -- false (different types)
-- Safe nil check
local val = nil
if val == nil then
print("no value")
endIgualdade de strings
Duas strings são iguais em Lua se, e somente se, tiverem o mesmo conteúdo em bytes e o mesmo comprimento. Lua armazena strings internamente, portanto strings iguais geralmente apontam para a mesma área de memória, tornando == uma comparação rápida de ponteiros. Nunca compare strings com is nem usando igualdade de referências — == sempre compara por valor.
local s1 = "hello"
local s2 = "hel" .. "lo"
print(s1 == s2) -- true (same content)
print(s1 == "Hello") -- false (case sensitive)
-- Check for empty string
local name = ""
if name == "" or name == nil then
print("name is empty or nil")
endComparação de tabelas e funções
Tabelas e funções são comparadas por referência, não por conteúdo. Dois literais de tabela diferentes com conteúdo idêntico não são iguais, a menos que sejam o mesmo objeto. Use métodos metamágicos como __eq para definir uma igualdade personalizada para tabelas.
local t1 = {1, 2, 3}
local t2 = {1, 2, 3}
local t3 = t1
print(t1 == t2) -- false (different objects)
print(t1 == t3) -- true (same reference)
local f1 = function() end
local f2 = function() end
print(f1 == f2) -- falsePadrões idiomáticos
Padrões comuns de Lua com condicionais: use assert() para validar pré-condições, use o truque and/or para valores padrão curtos e evite duplas negações (not not x) para converter qualquer valor em booleano.
-- assert pattern
local function sqrt(n)
assert(n >= 0, "sqrt of negative")
return math.sqrt(n)
end
-- Convert to boolean
local val = 42
local boolVal = not not val
print(boolVal) -- true
-- Default parameter
local function greet(name)
name = name or "World"
print("Hello, " .. name)
end
greet() -- Hello, WorldVerificação rápida
Quais valores são falsos em Lua?
Recapitulação: condicionais
Resumo:
if ... elseif ... else ... end— a forma completa de ramificação- Apenas
nilefalsesão falsos and/orusam curto-circuito e retornam os valores dos operandos~=significa "diferente" em Lua (não !=)- Tabelas e funções são comparadas por referência; strings, por valor
- Use cláusulas de guarda para reduzir o aninhamento
Perguntas Frequentes
A aula “Instruções if, elseif e else” é grátis?
Sim — o texto completo de “Instruções if, elseif e else” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Lua Academy, atualize para CoddyKit PRO. O curso de Lua Academy inclui 4 aulas no total.
O que vou aprender em “Instruções if, elseif e else”?
Escreva lógica de ramificação condicional com a sintaxe if/elseif/else do Lua. Você pratica Lua Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Lua Academy?
Nenhuma experiência prévia é necessária. Lua Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Instruções if, elseif e else”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Lua Academy?
Sim. Cada aula de Lua Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Instruções if, elseif e else
- Laços while e repeat-until
- Laço for numérico
- for genérico e break