0Pricing
Lua Academy · Aula

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)
end

A 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)
end

Ignorando 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)
end

Somando 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)
end

Filtragem 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
end

Verificaçã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

  1. Vetores como tabelas
  2. Adicionando e removendo itens
  3. Iterando com ipairs
  4. Tamanho e ordenação
← Voltar para Lua Academy