Tipando Funções Anônimas
Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 23 de 73.
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) aceitam 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 toda a expressão é 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ída, 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ácilReescreva esta função nomeada como uma função anônima armazenada em uma variável local, mantendo todas as anotações de tipo:
function subtract(a: number, b: number): number
return a - b
endAssim: crie local subtract = function(...) ... end com os mesmos tipos de parâmetros e de retorno.
Em seguida, crie mais duas funções anônimas tipadas:
createMessage: recebetext: stringe retorna a string"Message: [text]"(tipo de retornostring)isPositive: recebenum: numbere retornatruese o número for maior que 0; caso contrário, retornafalse(tipo de retornoboolean)
Chame e imprima, cada um em sua própria linha:
subtract(10, 3)createMessage("Hello World")isPositive(-5)isPositive(8)
Experimente você mesmo
-- Escreva o código aqui
-- local subtract = function(a: number, b: number): number ... end
-- local createMessage = function(text: string): string ... end
-- local isPositive = function(num: number): boolean ... end
-- então imprima os quatro resultados
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
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
Tipando Parâmetros e Valores de RetornoTipando Funções AnônimasFunções que Não Retornam NadaParâmetros OpcionaisValores Padrão para ParâmetrosFunções VariádicasDefinindo Tipos de FunçõesRecapitulação: Funções Tipadas2Tipos Fundamentais
Tipos Básicos: num, str, boolO Tipo 'any': Escape HatchO Tipo 'unknown'Tipos Nil e OpcionaisInferência de Tipos na PráticaAnotações Explícitas de TiposReciclagem: Prática de Tipos Fundamentais5Aliases, 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 MapsIterando Sobre TabelasTabelas de Formato MistoArrays Tipados Multidimensionaistable.unpack e VarargsRecapitulando: Arrays e MapsPratique por conta própria: Compilador de Lua online