Iterar con pairs()
Parte de la sección Lógica y flujo del Journey de Lua de Coddy. Lección 1 de 54.
pairs() te permite hacerlo al recorrer todas las entradas de una tabla, independientemente del tipo de las claves.La sintaxis para usar pairs() en un bucle for tiene este aspecto: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 a ambas piezas de información y trabajar con ellas 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 clave, incluidas cadenas, números e incluso otras tablas.Para el desafío: construir una cadenaEl desafío de abajo te pide devolver cada entrada como una sola cadena, así que aquí tienes un recordatorio de dos herramientas para cadenas de Fundamentos. Puedes unir cadenas con 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, lo interpreta como una instrucción para pasar a la línea siguiente.Por ejemplo, print("Line 1\nLine 2") mostrará:Line 1
Line 2Desafío
FácilEscribe una función printInventory que reciba una tabla inventory y devuelva una cadena con formato que enumere todos los artículos y sus cantidades.
Usa pairs() para recorrer la tabla de inventario y construir una cadena en la que cada línea muestre el nombre de un artículo seguido de su cantidad con 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á en dos líneas separadas. Ten cuidado de no añadir un "\n" inicial antes del primer artículo: añádelo solo entre los artículos.
Parámetros:
inventory(tabla): Una tabla tipo diccionario cuyas claves son nombres de artículos (cadenas) y cuyos valores son cantidades (números)
Devuelve: Una cadena con cada artículo y su 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 dar formato a 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 saber si estás añadiendo el primer elemento o uno posterior
-- para decidir si debes añadir un salto de 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
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 altasPractica por tu cuenta: Compilador de Lua online