Iterar con pairs()
Parte de la sección Lógica y flujo de control del Journey de Lua de Coddy — lección 1 de 54.
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 se ve así:for key, value in pairs(myTable) do
-- usa key y value aquí
endpairs() proporciona tanto la clave como su valor correspondiente. Esto significa que puedes acceder y trabajar con ambas partes 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)
endpairs() funciona con cualquier tipo de key, incluyendo strings, números o incluso otras tablas.Trabajando con CadenasEn Lua, puedes unir cadenas usando el operador de concatenación, que son dos puntos (..). Por ejemplo, "Hello" .. " " .. "World" da como resultado "Hello World".Si necesitas dar formato al texto en varias líneas, puedes usar el carácter de escape de nueva línea, "\n". Cuando Lua encuentra "\n" dentro de una cadena de texto, lo trata como una instrucción para pasar a la siguiente línea.Por ejemplo, print("Line 1\nLine 2") producirá como resultado:Line 1
Line 2Desafío
FácilEscribe una función printInventory que reciba una tabla inventory y devuelva una cadena con formato que liste todos los items y sus cantidades.
Usa pairs() para iterar a través de la tabla de inventario y construir una cadena donde cada línea muestre el nombre de un item seguido de su cantidad en el formato item: quantity. Cada item debe estar en una línea separada.
Para colocar cada item en su propia línea, usa el carácter de salto de línea "\n" entre las entradas. Por ejemplo, "apple: 5\nbanana: 3" se mostrará como dos líneas separadas. Ten cuidado de no agregar un "\n" inicial antes del primer item — solo agrégalo entre items.
Parámetros:
inventory(table): Una tabla de tipo diccionario donde las claves son nombres de items (cadenas) y los valores son cantidades (números)
Devuelve: Una cadena con cada item y cantidad en una línea separada, separados por "\n". Ejemplo de salida para {apple=5, banana=3}:apple: 5banana: 3
Pruébalo tú mismo
function printInventory(inventory)
-- Para formatear la salida, puedes concatenar cadenas usando el operador '..'.
-- Para añadir una nueva línea, usa el carácter especial '\n'.
-- Puede que necesites una forma de rastrear si estás añadiendo el primer elemento o uno posterior
-- para decidir si añadir una nueva línea antes del elemento.
-- Escribe el código aquí
endEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo de control
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