Menu
CoddyTech

Tipado de funciones anónimas

Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 24 de 80.

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) llevan anotaciones de tipo 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 llevan name: type entre paréntesis, y el tipo de retorno va después del paréntesis de cierre: la única diferencia respecto a una función con nombre es que la palabra clave function no tiene nombre y que 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 =>. Todas las expresiones de función se escriben con function ... end, sean largas o cortas.

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 según las anotaciones que escribiste.

challenge icon

Desafío

Fácil

Guarda funciones tipadas en variables locales.

  1. Reescribe subtract como local subtract = function(a: number, b: number): number, conservando su cuerpo.
  2. Añade local isPositive = function(num: number): boolean que devuelva num > 0.
  3. Imprime subtract(10, 3) e isPositive(-5).

Pulsa Run Code: la salida muestra 7 y false.

Pruébalo tú mismo

-- Reescribe esto como una función anónima almacenada en una variable local
function subtract(a: number, b: number): number
    return a - b
end

Todas las lecciones de Introducción a Luau

Practica por tu cuenta: Compilador de Luau online