Construcción de tablas y unpack()
Parte de la sección Logic & Flow 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 table.unpack(). Estas son particularmente útiles cuando se trabaja con funciones que necesitan un manejo flexible de argumentos.
Puedes capturar múltiples valores en una tabla de estilo lista usando la sintaxis de constructor de tablas con llaves. Esto recopila todos los valores en una única estructura de tabla.
local args = {10, 20, 30}
print(args[1]) -- Salida: 10
print(#args) -- Salida: 3La función table.unpack() hace lo contrario: toma una tabla de tipo lista y devuelve todos sus elementos como valores separados. Esto permite pasar el contenido de una tabla como argumentos individuales a una función.
local numbers = {5, 10, 15}
print(table.unpack(numbers)) -- Salida: 5 10 15Estas técnicas funcionan juntas a la perfección. Puedes recopilar valores en una tabla, manipular la tabla y luego volver a desempaquetarlos en valores individuales.
Desafío
FácilEscribe una función forwardArguments que reciba tres números a, b y c, y devuelva su suma utilizando la construcción de tablas y table.unpack().
Crea una tabla que contenga los tres argumentos usando la sintaxis {a, b, c}, luego desempáquetalos y pásalos a otra función que calcule su suma.
Lógica:
- Usa
{a, b, c}para crear una tabla que contenga los tres argumentos - Crea una función separada llamada
sumque reciba tres parámetros y devuelva su suma - Usa
table.unpack()para pasar los valores de la tabla a la funciónsum - Devuelve el resultado de la función
sum
Parámetros:
a(number): Primer númerob(number): Segundo númeroc(number): Tercer número
Devuelve: La suma de los tres números (number)
Hoja de referencia
Sintaxis del constructor de tablas {a, b, c, ...} crea una tabla de estilo lista. Usa # para obtener el recuento de elementos.
local args = {10, 20, 30}
print(args[1]) -- Salida: 10
print(#args) -- Salida: 3table.unpack() toma una tabla de estilo lista y devuelve todos sus elementos como valores separados, permitiéndote pasar el contenido de la tabla como argumentos individuales a una función.
local numbers = {5, 10, 15}
print(table.unpack(numbers)) -- Salida: 5 10 15Prué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 sum
end
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Logic & Flow
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