Menu
Coddy logo textTech

Construcción de tablas y unpack()

Parte de la sección Lógica y flujo de control del Journey de Lua de Coddy — lección 6 de 54.

Lua proporciona un par complementario de técnicas para trabajar con múltiples valores: construcción de tablas y unpack(). Estas son particularmente útiles al trabajar con funciones que necesitan un manejo flexible de argumentos.Puedes capturar múltiples valores en una tabla de tipo lista utilizando la sintaxis de constructor de tablas con llaves. Esto reúne todos los valores en una sola estructura de tabla.
local args = {10, 20, 30}
print(args[1])  -- Salida: 10
print(#args)    -- Salida: 3
La función unpack() hace lo opuesto: toma una tabla de tipo lista y devuelve todos sus elementos como valores separados. Esto te permite pasar el contenido de la tabla como argumentos individuales a una función.Importante: Aunque las versiones más recientes de Lua (5.2+) movieron esta función a table.unpack(), este entorno ejecuta Lua 5.1, por lo que debes usar la función global unpack().
local numbers = {5, 10, 15}
print(unpack(numbers))  -- Salida: 5    10    15
Estas técnicas funcionan juntas a la perfección. Puedes recolectar values en una table, manipular la table y después unpack de nuevo en values individuales.
challenge icon

Desafío

Fácil

Escribe una función forwardArguments que tome tres números a, b y c, y devuelva su suma utilizando la construcción de tablas y unpack().

Crea una tabla que contenga los tres argumentos utilizando la sintaxis {a, b, c}, después desempácalos y pásalos a otra función que calcule su suma.

Nota: Utiliza la función global unpack() en lugar de table.unpack() para garantizar la compatibilidad con este entorno.

Lógica:

  • Utiliza {a, b, c} para crear una tabla que contenga los tres argumentos
  • Crea una función independiente llamada sum que tome tres parámetros y devuelva su suma
  • Utiliza unpack() para pasar los valores de la tabla a la función sum
  • Devuelve el resultado de la función sum

Parámetros:

  • a (número): Primer número
  • b (número): Segundo número
  • c (número): Tercer número

Devuelve: La suma de los tres números (número)

Pruébalo tú mismo

function forwardArguments(a, b, c)
    -- Crea una función separada que calcule la suma

    -- Crea una tabla que contenga los tres argumentos

    -- Desempaqueta la tabla y pasa los valores a la función suma
    -- Pista: Usa la función global 'unpack' para expandir los argumentos de la tabla

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 de control