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

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

challenge icon

Desafío

Fácil

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

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

Llama e imprime, cada uno 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