Parâmetros opcionais
Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 26 de 80.
No Lua tradicional, você sempre podia omitir argumentos: os que faltavam se tornavam nil silenciosamente, e esquecer de lidar com isso era uma fonte clássica de bugs. Luau torna essa possibilidade explícita: adicione ? ao tipo de um parâmetro para marcá-lo como opcional.
function greet(name: string, title: string?): string
if title then
return `{title} {name}`
end
return `Hello, {name}`
end
print(greet("Ada")) -- Hello, Ada
print(greet("Ada", "Dr.")) -- Dr. Adastring? significa "string ou nil". Quem chama a função pode passar uma string ou omitir o argumento completamente; parâmetros sem ? são obrigatórios, e o verificador sinaliza chamadas que os omitem.
Dentro da função, um parâmetro opcional pode ser nil, então verifique-o antes de usá-lo: if title then ... end é o padrão usual. Ignore a verificação e concatene nil a uma string, e você terá o mesmo erro de tempo de execução que Lua sempre apresentava; o verificador de tipos avisa você primeiro.
Desafio
FácilEscreva uma função de perfil cujo nome de exibição seja opcional.
- Escreva
local function createUserProfile(username: string, displayName: string?): string. - Retorne
`Profile: {displayName} (@{username})`quandodisplayNamefor informado; caso contrário, retorne`Profile: @{username}`. - Imprima
createUserProfile("john_doe", "John Doe")ecreateUserProfile("jane_smith").
Pressione Executar código: a saída mostra Profile: John Doe (@john_doe) e Profile: @jane_smith.
Experimente você mesmo
-- 1) createUserProfile(username: string, displayName: string?): string
-- 2) imprima o resultado com e sem um nome de exibição
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