Construcción de tablas y unpack()
Parte de la sección Lógica y flujo del Journey de Lua de Coddy. Lección 6 de 54.
unpack(). Estas son especialmente útiles al trabajar con funciones que necesitan manejar argumentos de forma flexible.Puedes capturar varios valores en una tabla de tipo lista usando la sintaxis del 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: 3unpack() hace lo contrario. 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+) trasladaron esta función a table.unpack(), este entorno ejecuta Lua 5.1, así que debes usar la función global unpack().local numbers = {5, 10, 15}
print(unpack(numbers)) -- Salida: 5 10 15Desafío
FácilEscribe una función forwardArguments que reciba tres números a, b y c, y devuelva su suma usando la construcción de tablas y unpack().
Crea una tabla que contenga los tres argumentos con la sintaxis {a, b, c}; después, desempaquétalos y pásalos a otra función que calcule su suma.
Nota: Usa la función global unpack() en lugar de table.unpack() para garantizar la compatibilidad con este entorno.
Lógica:
- Usa
{a, b, c}para crear una tabla que contenga los tres argumentos - Crea una función independiente llamada
sumque reciba tres parámetros y devuelva su suma - Usa
unpack()para pasar los valores de la tabla a la funciónsum - Devuelve el resultado de la función
sum
Parámetros:
a(número): Primer númerob(número): Segundo númeroc(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 independiente que calcule la suma
-- Crea una tabla que contenga los tres argumentos
-- Desempaqueta la tabla y pasa los valores a la función de suma
-- Pista: Usa la función global 'unpack' para expandir los argumentos de la tabla
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