Iterar con pairs()
Parte de la sección Logic & Flow del Journey de Lua de Coddy — lección 1 de 54.
Al trabajar con tablas de estilo diccionario en Lua, a menudo necesitas acceder a cada par clave-valor almacenado en su interior. La función pairs() hace esto posible al permitirte recorrer todas las entradas de una tabla, independientemente del tipo que sean las claves.
La sintaxis para usar pairs() en un bucle for es la siguiente:
for key, value in pairs(myTable) do
-- usa key y value aquí
endDurante cada iteración del bucle, pairs() proporciona tanto la clave como su valor correspondiente. Esto significa que puedes acceder y trabajar con ambas piezas de información al mismo tiempo.
Aquí tienes un ejemplo práctico con el inventario de un jugador:
local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endEste código imprimirá el nombre de cada artículo y su cantidad. La función pairs() funciona con cualquier tipo de clave, incluyendo cadenas, números o incluso otras tablas.
Desafío
FácilEscribe una función printInventory que reciba una tabla inventory y devuelva una cadena formateada que enumere todos los artículos y sus cantidades.
Usa pairs() para iterar a través de la tabla inventory y construir una cadena donde cada línea muestre el nombre de un artículo seguido de su cantidad en el formato item: quantity. Cada artículo debe estar en una línea separada.
Para colocar cada artículo en su propia línea, usa el carácter de nueva línea "\n" entre las entradas. Por ejemplo, "apple: 5\nbanana: 3" se mostrará como dos líneas separadas. Ten cuidado de no añadir un "\n" inicial antes del primer artículo; solo añádelo entre los artículos.
Parámetros:
inventory(table): Una tabla de estilo diccionario donde las claves son nombres de artículos (strings) y los valores son cantidades (numbers)
Devuelve: Una cadena con cada artículo y cantidad en una línea separada, separados por "\n". Ejemplo de salida para {apple=5, banana=3}:apple: 5banana: 3
Hoja de referencia
La función pairs() te permite recorrer todos los pares clave-valor en una tabla de tipo diccionario:
for key, value in pairs(myTable) do
-- usa la clave y el valor aquí
endDurante cada iteración, pairs() proporciona tanto la clave como su valor correspondiente, permitiéndote acceder a ambas piezas de información simultáneamente.
Ejemplo con una tabla de inventario:
local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endLa función pairs() funciona con cualquier tipo de clave, incluyendo cadenas de texto, números o incluso otras tablas.
Pruébalo tú mismo
function printInventory(inventory)
-- Escribe el código aquí
end
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Logic & Flow
1Iteración avanzada de tablas
Iterar con pairs()Iterar con ipairs()pairs() vs. ipairs()Resumen - Ficha de personaje2Más funciones de la librería table
table.concat()Construcción de tablas y unpack()table.sort()Ordenamiento personalizado con funcionesRepaso - Tabla de puntuaciones altas