Menu
Coddy logo textTech

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) .. "!"
end

Los 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.

challenge icon

Desafío

Fácil

Reescribe 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
end

Así 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: recibe text: string y devuelve la cadena "Message: [text]" (tipo de retorno string)
  • isPositive: recibe num: number y devuelve true si el número es mayor que 0; de lo contrario, devuelve false (tipo de retorno boolean)

Llama a cada función e imprime el resultado en su propia línea:

  1. subtract(10, 3)
  2. createMessage("Hello World")
  3. isPositive(-5)
  4. 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
quiz iconPonte a prueba

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

Practica por tu cuenta: Compilador de Lua online