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 almacenado 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) aceptan 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 aparece después del paréntesis de cierre: la única diferencia con 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 has visto JavaScript o TypeScript, ten en cuenta que Luau no tiene funciones flecha. No existe la sintaxis =>. Toda expresión de función se escribe con function ... end, ya sea larga o corta.
Una vez asignada, la llamas a través de la variable como a cualquier función: double(21) devuelve 42, y el comprobador verifica cada llamada con respecto a las anotaciones que has escrito.
Desafío
FácilReescribe esta función anónima con nombre como una función anónima almacenada en una variable local, conservando todas las anotaciones de tipo:
function subtract(a: number, b: number): number
return a - b
endAsí que: crea local subtract = function(...) ... end con los mismos tipos de parámetros y de retorno.
Después crea otras dos funciones anónimas tipadas:
createMessage: recibetext: stringy devuelve la cadena"Message: [text]"(tipo de retornostring)isPositive: recibenum: numbery devuelvetruesi el número es mayor que 0; de lo contrario, devuelvefalse(tipo de retornoboolean)
Llama a cada función e imprime el resultado 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 MapsPractica por tu cuenta: Compilador de Lua online