Tipando Funções Anônimas
Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 23 de 73.
Em Lua, funções são valores — você as armazenou em variáveis e as passou de um lado para o outro: 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 fazem:
local double = function(x: number): number
return x * 2
end
local shout = function(text: string): string
return string.upper(text) .. "!"
endParâmetros recebem name: type dentro dos parênteses, e o tipo de retorno segue após o parêntese de fechamento — a única diferença para uma função nomeada é que a palavra-chave function não tem um nome e a expressão inteira é atribuída a uma variável.
Se você já viu JavaScript ou TypeScript, note que o Luau não possui arrow functions — não existe sintaxe =>. Toda expressão de função é escrita com function ... end, seja longa ou curta.
Uma vez atribuída, você a chama através da variável como qualquer função: double(21) retorna 42, e o verificador valida cada chamada em relação às 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
endPortanto: 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: string, retorna a string"Message: [text]"(tipo de retornostring)isPositive— recebenum: number, retornatruese o número for maior que 0, caso contráriofalse(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 Maps