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() lo hace posible al permitirte recorrer todas las entradas de una tabla, independientemente del tipo de 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 o incluso otras tablas.Trabajar con stringsEn Lua, puedes unir strings 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, lo trata como una instrucción para pasar a la siguiente línea.Por ejemplo, print("Line 1\nLine 2") generará:Line 1
Line 2Desafío
FácilEscribe una función printInventory que tome una tabla inventory y devuelva una cadena con formato que enumere todos los elementos y sus cantidades.
Usa pairs() para iterar por la tabla de inventario y construir una cadena en la que cada línea muestre un nombre de elemento seguido de su cantidad con el formato item: quantity. Cada elemento debe estar en una línea separada.
Para colocar cada elemento 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 elemento: añádelo únicamente entre los elementos.
Parámetros:
inventory(tabla): Una tabla con estilo de diccionario donde las claves son nombres de elementos (cadenas) y los valores son cantidades (números)
Devuelve: Una cadena con cada elemento 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'.
-- Podrías necesitar 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 altasPractica por tu cuenta: Compilador de Lua online