Iterando com ipairs()
Parte da seção Lógica e Fluxo do Journey de Lua da Coddy. Lição 2 de 54.
Embora pairs() funcione com qualquer estrutura de tabela, Lua fornece uma função especializada chamada ipairs(), projetada especificamente para tabelas no estilo de lista. Essa função itera pelas tabelas em ordem sequencial, começando pelo índice 1 e continuando até encontrar um valor nil.
A sintaxe de ipairs() é semelhante à de 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 a pairs() é que ipairs() para imediatamente quando encontra um valor nil, mesmo que haja mais elementos depois dele.
Desafio
FácilEscreva uma função listTasks que receba uma tabela tasks e retorne 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 em que cada linha mostre 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(tabela): Uma tabela no estilo lista contendo nomes de tarefas como strings
Retorna: 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çõesRevisão - Placar de pontuações máximasPratique por conta própria: Compilador de Lua online