Iterando com ipairs
Percorra sequências em ordem.
Iterando com ipairs é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 3 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.
Por que usar ipairs
Percorrer uma sequência por índice funciona, mas ipairs é mais simples e seguro. Ele fornece cada índice e valor na ordem.
Ele começa no índice 1 e para no primeiro nil, sendo perfeito para sequências sem lacunas.
local fruits = {"apple", "banana", "cherry"}
for i, v in ipairs(fruits) do
print(i, v)
endA estrutura do laço
O padrão é for index, value in ipairs(t) do ... end.
A cada passagem, index é a posição baseada em 1 e value é o elemento que está nela. Não é necessário um contador manual.
local colors = {"red", "green", "blue"}
for i, c in ipairs(colors) do
print("Color", i, "is", c)
endIgnorando o índice
Se você precisa apenas dos valores, por convenção, dê ao índice o nome _ para mostrar que ele não é usado.
O laço ainda visita os itens na ordem baseada em 1.
local nums = {10, 20, 30}
local total = 0
for _, n in ipairs(nums) do
total = total + n
end
print("sum:", total)Começa em 1 e para em uma lacuna
ipairs começa no índice 1 e continua enquanto o índice seguinte não for nil.
Se houver uma lacuna, ele para nesse ponto. Portanto, ipairs serve para sequências organizadas, não para tabelas com posições ausentes.
local t = {"a", "b", nil, "d"}
for i, v in ipairs(t) do
print(i, v)
endSomando valores
Uma tarefa frequente é reduzir uma lista a um único número, como uma soma ou um máximo.
ipairs torna isso fácil de ler: visite cada valor e acumule o resultado.
local prices = {3, 7, 2, 9}
local max = prices[1]
for _, p in ipairs(prices) do
if p > max then max = p end
end
print("max:", max)Construindo uma nova lista
Combine ipairs com table.insert para transformar uma sequência em outra.
Aqui, dobramos cada número em uma tabela nova, mantendo a ordem e os índices baseados em 1.
local src = {1, 2, 3}
local doubled = {}
for _, n in ipairs(src) do
table.insert(doubled, n * 2)
end
print(doubled[1], doubled[2], doubled[3])ipairs versus pairs
pairs percorre todas as chaves, incluindo chaves de texto, em uma ordem não garantida. ipairs percorre somente a sequência de inteiros 1, 2, 3... em ordem.
Para sequências ordenadas, prefira ipairs.
local t = {"x", "y"}
t.name = "extra"
for i, v in ipairs(t) do
print(i, v)
endFiltragem com uma condição
Use um if dentro do laço para manter somente os itens correspondentes.
Abaixo, coletamos palavras com mais de três letras em uma nova sequência.
local words = {"hi", "hello", "yo", "howdy"}
local long = {}
for _, w in ipairs(words) do
if #w > 3 then table.insert(long, w) end
end
print(long[1], long[2])Encontrando um item
Para pesquisar, percorra com ipairs e pare quando o item for encontrado. O índice informa a posição baseada em 1.
Retornamos antecipadamente usando break assim que o alvo aparece.
local names = {"Ann", "Bob", "Cy"}
local found = 0
for i, n in ipairs(names) do
if n == "Bob" then found = i break end
end
print("Bob at index", found)Contando durante a iteração
Você pode contar as correspondências incrementando uma variável dentro do laço.
Isso evita acessar os índices diretamente e ainda percorre toda a sequência.
local marks = {5, 8, 3, 9, 6}
local passes = 0
for _, m in ipairs(marks) do
if m >= 6 then passes = passes + 1 end
end
print("passing:", passes)ipairs aninhado
Para uma tabela de tabelas, aninhe dois laços ipairs para visitar cada célula.
O laço externo percorre as linhas, e o interno percorre as colunas, todas baseadas em 1.
local grid = {{1, 2}, {3, 4}}
for _, row in ipairs(grid) do
for _, cell in ipairs(row) do
print(cell)
end
endVerificação rápida
Lembre-se de onde ipairs começa e termina.
Recapitulação
Você aprendeu o padrão for i, v in ipairs(t): ele percorre uma sequência em ordem baseada em 1 e para na primeira lacuna.
Use-o para somar, filtrar, pesquisar e transformar listas. Em seguida, você medirá o comprimento com # e ordenará os itens com table.sort.
Perguntas Frequentes
A aula “Iterando com ipairs” é grátis?
Sim — o texto completo de “Iterando com ipairs” é 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 “Iterando com ipairs”?
Percorra sequências em ordem. 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 3 de 4.
Quanto tempo leva a aula “Iterando com ipairs”?
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
- Vetores como tabelas
- Adicionando e removendo itens
- Iterando com ipairs
- Tamanho e ordenação