Menu
Coddy logo textTech

Iterar con ipairs()

Parte de la sección Logic & Flow del Journey de Lua de Coddy — lección 2 de 54.

Mientras que pairs() funciona con cualquier estructura de tabla, Lua proporciona una función especializada llamada ipairs() diseñada específicamente para tablas de estilo lista. Esta función itera a través de las tablas en orden secuencial, comenzando desde el índice 1 y continuando hasta que encuentra un valor nil.

La sintaxis de ipairs() es similar a pairs():

for index, value in ipairs(myList) do
    -- usa index y value aquí
end

Aquí tienes un ejemplo con una lista de objetos de misión:

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

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

Resultado:

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

La diferencia clave con respecto a pairs() es que ipairs() se detiene inmediatamente cuando encuentra un valor nil, incluso si hay más elementos después de él.

challenge icon

Desafío

Fácil

Escribe una función listTasks que reciba una tabla tasks y devuelva una cadena formateada que enumere todas las tareas con sus números de posición.

Usa ipairs() para iterar a través de las tareas en orden secuencial y construir una cadena donde cada línea muestre el número de tarea seguido del nombre de la tarea en el formato number. task. Cada tarea debe estar en una línea separada.

Parámetros:

  • tasks (table): Una tabla de tipo lista que contiene nombres de tareas como cadenas

Devuelve: Una cadena con cada tarea numerada en una línea separada. Formato: 

1. task1
2. task2
3. task3

Hoja de referencia

ipairs() itera a través de tablas de estilo lista en orden secuencial, comenzando desde el índice 1 y deteniéndose en el primer valor nil:

for index, value in ipairs(myList) do
    -- usa index y value aquí
end

Ejemplo:

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

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

Diferencia clave: A diferencia de pairs(), ipairs() se detiene inmediatamente cuando encuentra un valor nil, incluso si existen más elementos después de él.

Pruébalo tú mismo

function listTasks(tasks)
    -- Escribe el código aquí
end
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow