Menu
CoddyTech

Tipagem de funções anônimas

Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 24 de 80.

No Lua, funções são valores: você as armazenou em variáveis e as passou adiante: local f = function(x) return x * 2 end. Essas funções anônimas (expressões de função) recebem anotações de tipo exatamente como as funções nomeadas:

local double = function(x: number): number
    return x * 2
end

local shout = function(text: string): string
    return string.upper(text) .. "!"
end

Os parâmetros recebem name: type dentro dos parênteses, e o tipo de retorno vem depois do parêntese de fechamento: a única diferença em relação a uma função nomeada é que a palavra-chave function não tem nome e a expressão inteira é atribuída a uma variável.

Se você já viu JavaScript ou TypeScript, observe que Luau não tem funções de seta. Não existe a sintaxe =>. Toda expressão de função é escrita com function ... end, seja longa ou curta.

Depois de atribuí-la, você a chama por meio da variável como qualquer função: double(21) retorna 42, e o verificador confere cada chamada com base nas anotações que você escreveu.

challenge icon

Desafio

Fácil

Armazene funções tipadas em variáveis locais.

  1. Reescreva subtract como local subtract = function(a: number, b: number): number, mantendo o corpo.
  2. Adicione local isPositive = function(num: number): boolean que retorna num > 0.
  3. Imprima subtract(10, 3) e isPositive(-5).

Pressione Executar código: a saída mostra 7 e false.

Experimente você mesmo

-- Reescreva isto como uma função anônima armazenada em uma variável local
function subtract(a: number, b: number): number
    return a - b
end

Todas as lições de Introdução ao Luau

Pratique por conta própria: Compilador de Luau online