Tipado de Funciones Anónimas
Parte de la sección Introducción a Luau del Journey de Lua de Coddy — lección 23 de 73.
En Lua, las funciones son valores — las has guardado en variables y las has pasado de un lado a otro: local f = function(x) return x * 2 end. Estas funciones anónimas (expresiones de función) llevan anotaciones de tipo exactamente igual que las funciones con nombre:
local double = function(x: number): number
return x * 2
end
local shout = function(text: string): string
return string.upper(text) .. "!"
endLos parámetros reciben name: type dentro de los paréntesis, y el tipo de retorno va después del paréntesis de cierre — la única diferencia con respecto a una función con nombre es que la palabra clave function no tiene nombre y toda la expresión se asigna a una variable.
Si conoces JavaScript o TypeScript, ten en cuenta que Luau no tiene funciones flecha — no existe la sintaxis =>. Cada expresión de función se escribe con function ... end, sea larga o corta.
Una vez asignada, la llamas a través de la variable como cualquier función: double(21) devuelve 42, y el comprobador verifica cada llamada en comparación con las anotaciones que escribiste.
Desafío
FácilReescribe esta función con nombre como una función anónima guardada en una variable local, manteniendo todas las anotaciones de tipo:
function subtract(a: number, b: number): number
return a - b
endAsí: crea local subtract = function(...) ... end con los mismos tipos de parámetros y de retorno.
Después, crea dos funciones anónimas con tipos adicionales:
createMessage— recibetext: string, devuelve el string"Message: [text]"(tipo de retornostring)isPositive— recibenum: number, devuelvetruesi el número es mayor que 0, de lo contrariofalse(tipo de retornoboolean)
Llama e imprime, cada uno en su propia línea:
subtract(10, 3)createMessage("Hello World")isPositive(-5)isPositive(8)
Pruébalo tú mismo
-- Escribe código aquí
-- local subtract = function(a: number, b: number): number ... end
-- local createMessage = function(text: string): string ... end
-- local isPositive = function(num: number): boolean ... end
-- luego imprime los cuatro resultados
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
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 Luau4Trabajando con Funciones
Tipado de Parámetros y Valores de RetornoTipado de Funciones AnónimasFunciones que no Retornan NadaParámetros OpcionalesValores por Defecto en ParámetrosFunciones VariádicasDefinición de Tipos de FuncionesRecapitulaciones: Funciones Tipadas2Tipos principales
Tipos básicos: num, str, boolEl tipo 'any': Vía de escapeEl tipo 'unknown'Tipos nulos y opcionalesInferencia de tipos en acciónAnotaciones explícitas de tiposResumen: Práctica de tipos principales5Alias, 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 Maps
Arrays tipadosAñadir y leer elementos¿Qué es un tipo Map?Declarar y acceder a MapsIterar tablasTablas de forma mixtaArrays tipados multidimensionalestable.unpack y VarargsRecapitulaciones: Arrays y Maps