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) .. "!"
endOs 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.
Desafio
FácilArmazene funções tipadas em variáveis locais.
- Reescreva
subtractcomolocal subtract = function(a: number, b: number): number, mantendo o corpo. - Adicione
local isPositive = function(num: number): booleanque retornanum > 0. - Imprima
subtract(10, 3)eisPositive(-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
1Começando com o Luau
O que é Luau?Por que usar Luau?Seu primeiro código em LuauVerificação de tipos e modos de erroRecapitulando: Introdução ao Luau4Trabalhando com funções
Tipagem de parâmetros e valores de retornoTipagem de funções anônimasFunções sem retornoParâmetros opcionaisValores padrão dos parâmetrosValores padrão para booleanosFunções variádicasDefinindo tipos de funçãoRecapitulação: funções tipadas2Tipos básicos
Número, string e booleanoO tipo 'any': válvula de escapeO tipo 'unknown'Tipos nulos e opcionaisInferência de tipos na práticaAnotações explícitas de tipoRevisão: prática com tipos básicos5Aliases, Uniões, Interseções
Aliases de Tipos para PrimitivosTipos de UniãoTrabalhando com Tipos de UniãoTipos LiteraisTipos de InterseçãoCombinando Aliases de TiposRecapitulando: Combinações Avançadas de Tipos3Tabelas Tipadas: Arrays e Maps
Arrays TipadosAdicionando e Lendo ElementosO que é um Tipo Map?Declarando e Acessando MapsPercorrendo TabelasTabelas com Formatos MistosLendo uma GradeConstruindo uma Gradetable.unpackRevisão: Arrays e MapsPratique por conta própria: Compilador de Luau online