Funciones variádicas
Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 29 de 80.
Has usado ... (varargs) de Lua para escribir funciones que aceptan cualquier cantidad de argumentos. Luau te permite tipar los varargs, así que se comprueba cada argumento que llega:
function sum(...: number): number
local total = 0
for _, n in ipairs({...}) do
total = total + n
end
return total
end
print(sum(1, 2)) -- 3
print(sum(1, 2, 3, 4, 5)) -- 15...: number declara que cada argumento adicional debe ser un número: sum(1, "two") se convierte en un error de tipo. Las herramientas de ejecución son las que ya conoces:
{...}reúne los varargs en un arreglo (aquí, un{number})select("#", ...)cuenta cuántos argumentos llegaron...se puede pasar directamente a otra función, por ejemplo,math.max(...)
Al igual que en Lua, ... debe ser el último parámetro: primero van los parámetros normales (con tipo), y el segmento variádico reúne el resto:
function joinWords(separator: string, ...: string): string
return table.concat({...}, separator)
end
print(joinWords("-", "a", "b", "c")) -- a-b-cDesafío
FácilEscribe dos funciones que acepten cualquier cantidad de argumentos.
- Escribe
local function sumAll(...: number): number, que sume{...}conipairs. - Escribe
local function joinWords(separator: string, ...: string): string, que devuelvatable.concat({...}, separator). - Imprime
sumAll(5, 10, 15)yjoinWords("-", "apple", "banana", "cherry").
Pulsa Ejecutar código: el resultado muestra 30 y apple-banana-cherry.
Pruébalo tú mismo
-- 1) sumAll(...: number): number
-- 2) joinWords(separator: string, ...: string): string
-- 3) imprime los dos resultados
Todas las lecciones de Introducción a Luau
1Primeros pasos con Luau
¿Qué es Luau?¿Por qué usar Luau?Tu primer código en LuauComprobación de tipos y modos de errorRecapitulacion: Introducción a Luau4Trabajar con funciones
Tipado de parámetros y valores de retornoTipado de funciones anónimasFunciones que no devuelven nadaParámetros opcionalesValores predeterminados de parámetrosValores predeterminados para booleanosFunciones variádicasDefinir tipos de funcionesRepaso: funciones tipadas7Proyecto: Gestor de tareas tipado
Proyecto: La estructura de una tareaFunción para añadir una tarea2Tipos fundamentales
Número, cadena y booleanoEl tipo 'any': una salida de emergenciaEl tipo 'unknown'Tipos nulos y opcionalesLa inferencia de tipos en acciónAnotaciones de tipo explícitasRepaso: práctica de tipos fundamentales5Alias, Uniones e Intersecciones
Alias de tipos para primitivosTipos de uniónTrabajando con tipos de uniónTipos literalesTipos de intersecciónCombinando alias de tiposResumen: Combinaciones avanzadas de tipos3Tablas tipadas: arrays y mapas
Arrays tipadosAgregar y leer elementos¿Qué es un tipo mapa?Declarar y acceder a mapasRecorrer tablasTablas de formas mixtasLeer una cuadrículaConstruir una cuadrículatable.unpackRepaso: arrays y mapasPractica por tu cuenta: Compilador de Luau online