Menu
Coddy logo textTech

Iterando com ipairs()

Parte da seção Logic & Flow do Journey de Lua da Coddy — lição 2 de 54.

Enquanto o pairs() funciona com qualquer estrutura de tabela, Lua fornece uma função especializada chamada ipairs() projetada especificamente para tabelas do tipo lista. Esta função itera pelas tabelas em ordem sequencial, começando do índice 1 e continuando até encontrar um valor nil.

A sintaxe para ipairs() é semelhante a pairs():

for index, value in ipairs(myList) do
    -- use index e value aqui
end

Aqui está um exemplo com uma lista de itens de missão:

local questItems = {"Map", "Compass", "Torch", "Rope"}

for i, item in ipairs(questItems) do
    print(i .. ". " .. item)
end

Saída:

1. Map
2. Compass
3. Torch
4. Rope

A principal diferença em relação ao pairs() é que o ipairs() para imediatamente quando encontra um valor nil, mesmo que existam mais elementos depois dele.

challenge icon

Desafio

Fácil

Escreva uma função listTasks que recebe uma tabela tasks e retorna uma string formatada listando todas as tarefas com seus números de posição.

Use ipairs() para iterar pelas tarefas em ordem sequencial e construir uma string onde cada linha mostra o número da tarefa seguido pelo nome da tarefa no formato number. task. Cada tarefa deve estar em uma linha separada.

Parâmetros:

  • tasks (table): Uma tabela do tipo lista contendo nomes de tarefas como strings

Retorno: Uma string com cada tarefa numerada em uma linha separada. Formato: 

1. task1
2. task2
3. task3

Folha de consulta

ipairs() percorre tabelas do tipo lista em ordem sequencial, começando do índice 1 e parando no primeiro valor nil:

for index, value in ipairs(myList) do
    -- use o índice e o valor aqui
end

Exemplo:

local questItems = {"Map", "Compass", "Torch", "Rope"}

for i, item in ipairs(questItems) do
    print(i .. ". " .. item)
end
-- Saída:
-- 1. Map
-- 2. Compass
-- 3. Torch
-- 4. Rope

Diferença principal: Ao contrário de pairs(), o ipairs() para imediatamente quando encontra um valor nil, mesmo que existam mais elementos depois dele.

Experimente você mesmo

function listTasks(tasks)
    -- Escreva o código aqui
end
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow