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.
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: 3unpack() 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 15Desafío
FácilEscribe 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
sumque tome tres parámetros y devuelva su suma - Utiliza
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 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
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 altas