O controle de fluxo em Lua é similar a outras linguagens de programação e oferece diversas estruturas para controlar a execução do seu código. As principais estruturas de controle em Lua são:
Estruturas Condicionais:
if.Exemplo:
if x > 10 then
print("x é maior que 10")
elseif x == 10 then
print("x é igual a 10")
else
print("x é menor que 10")
end
Laços de Repetição:
in).until for falsa; quando a condição se torna verdadeira, o laço termina.Exemplo:
for i = 1, 10 do
print(i)
end
-- Imprime números de 1 a 10
while x < 10 do
x = x + 1
end
-- Incrementa x enquanto for menor que 10
local tentativas = 0
repeat
tentativas = tentativas + 1
until tentativas >= 3
-- O bloco do repeat executa ao menos uma vez,
-- mesmo que a condição já comece verdadeira;
-- aqui, executa 3 vezes (tentativas termina em 3).
Outras Estruturas:
goto continue em goto.lua).O que conta como verdadeiro em uma condição:
Uma condição em Lua pode ser qualquer expressão, não apenas booleanos. A regra é simples:
nil e false contam como falsos.0 (que é falso em C, Python e JavaScript) e a string vazia "" (falsa em Python e JavaScript).if 0 then print("0 é verdadeiro em Lua") end -- imprime!
if "" then print('"" também é verdadeiro') end -- imprime!
if nil then print("nunca executa") end -- não imprime
if false then print("nunca executa") end -- não imprime
Veja o exemplo executável em valores_verdadeiros.lua.
Observações:
do ... end; cada estrutura delimita seu bloco com a própria sintaxe (then ... end no if, do ... end no while e no for, until fechando o repeat, end encerrando corpos de função).