Iterando com ipairs()
Parte da seção Lógica e Fluxo 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
endAqui 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)
endSaída:
1. Map
2. Compass
3. Torch
4. RopeA 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.
Desafio
FácilEscreva 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. task3Experimente você mesmo
function listTasks(tasks)
-- Escreva o código aqui
end
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Iteração Avançada de Tabelas
Iterando com pairs()Iterando com ipairs()pairs() vs. ipairs()Revisão - Ficha de Personagem2Mais Funções da Biblioteca Table
table.concat()Construção de tabelas e unpack()table.sort()Ordenação personalizada com funçõesRecapitulação - Placar de recordes