Menu
CoddyTech

Iterar con pairs()

Parte de la sección Lógica y flujo del Journey de Lua de Coddy. Lección 1 de 54.

Al trabajar con tablas de tipo diccionario en Lua, a menudo necesitas acceder a cada par clave-valor almacenado en ellas. La función 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í
end
En cada iteración del bucle, pairs() 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)
end
Este código imprimirá el nombre y la cantidad de cada elemento. La función pairs() 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 2
challenge icon

Desafío

Fácil

Escribe 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: 5
banana: 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í
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 Lógica y flujo

Practica por tu cuenta: Compilador de Lua online