Menu
CoddyTech

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. Ada

string? 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.

challenge icon

Desafio

Fácil

Escreva uma função de perfil cujo nome de exibição seja opcional.

  1. Escreva local function createUserProfile(username: string, displayName: string?): string.
  2. Retorne `Profile: {displayName} (@{username})` quando displayName for informado; caso contrário, retorne `Profile: @{username}`.
  3. Imprima createUserProfile("john_doe", "John Doe") e createUserProfile("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

Pratique por conta própria: Compilador de Luau online