Estrutura de repetição
As estruturas de repetição permitem executar um bloco de código
repetidamente com base em uma condição. Lua oferece três tipos
principais de estruturas de repetição: for
loop, while
loop.
Vamos explorar cada uma delas:
For númerico
O loop for é utilizado quando se conhece previamente o número de iterações. Ele percorre uma sequência de valores e executa um bloco de código para cada valor da sequência.
Exemplo 1:
Exemplo 2:
O for loop possui três parâmetros: o primeiro é a variável de
controle (no caso, i
), o segundo é o limite (o loop será executado enquanto a
variável de controle for menor ou igual ao limite), e o terceiro é o
incremento da variável de controle a cada iteração.
Tip
Se você omitir o terceiro parâmetro no for loop em Lua, ele assumirá um valor padrão de 1. Isso significa que a variável de controle será incrementada em 1 a cada iteração.
While Loop
O loop while é utilizado quando a condição de repetição não é conhecida antecipadamente. Ele executa um bloco de código repetidamente enquanto a condição especificada for verdadeira.
repeat-until
A estrutura repeat-until
é uma forma de loop em Lua que executa um bloco de
código repetidamente até que uma condição especificada seja verdadeira.
Note
A principal diferença em relação ao loop while
é que a condição é verificada
no final da iteração, ou seja, o bloco de código é executado pelo menos uma
vez antes de verificar a condição.
Neste exemplo, o bloco de código será executado repetidamente enquanto a
condição i > 5
for falsa. A cada iteração, o valor de i
é incrementado em 1.
For generico (ipars)
O for loop
genérico em Lua permite percorrer uma coleção de valores
arbitrários, como uma tabela.
Ele oferece uma maneira conveniente de iterar sobre os elementos de uma
coleção sem precisar acompanhar manualmente o índice ou o estado de iteração.
For generico (pairs)
O pairs()
é uma função em Lua que retorna um iterador para percorrer
todas as chaves e valores de uma tabela. Ao contrário do ipairs()
, que
itera apenas sobre as chaves numéricas da tabela em ordem crescente, o
pairs()
itera sobre todas as chaves da tabela, independentemente do tipo
ou ordem.
Como iterar strings
Em Lua, é possível iterar uma string tratando-a como uma sequência de caracteres. Você pode usar o for loop genérico em conjunto com a função string.gmatch para percorrer cada caractere da string.
Tipe
O ponto "."
passado como argumento para gmatch representa um padrão que
captura cada caractere individual da string. Dessa forma, o for
loop itera por todos os caracteres da string.