Menu
CoddyTech

Propriedades Opcionais

Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 41 de 80.

Nem todos os campos estão sempre presentes. Em Lua, um campo ausente de uma tabela simplesmente é lido como nil, o que é flexível, mas também é assim que bugs como attempt to concatenate a nil value acabam surgindo.

Luau permite que um tipo de estrutura indique isso explicitamente: adicione ? depois do tipo de um campo para marcá-lo como opcional:

type User = {
    name: string,   -- obrigatório
    email: string?, -- opcional: string ou nil
}

local alice: User = {name = "Alice", email = "alice@luau.dev"}
local bob: User = {name = "Bob"} -- ✓ tudo certo, email é opcional

Você já viu isso antes com variáveis: string? é uma forma abreviada de string | nil. Agora, a mesma ideia se aplica a campos individuais de uma estrutura.

Como um campo opcional pode ser nil, você precisa verificar antes de usá-lo. O padrão clássico de Lua funciona e, no modo estrito, o verificador restringe o tipo dentro do ramo:

if bob.email then
    print(`email: {bob.email}`) -- aqui email é uma string
else
    print("no email on file")
end

Opcional significa "pode estar ausente". Isso não significa "qualquer tipo". Se email existir, ainda precisará ser uma string.

challenge icon

Desafio

Fácil

Imprima contatos cujo e-mail pode estar ausente.

  1. Escreva type User = {name: string, email: string?}, depois local mia: User = {name = "Mia", email = "mia@coddy.tech"} e local leo: User = {name = "Leo"}.
  2. Escreva local function printContact(user: User) para imprimir `{user.name}: {user.email}` ou `{user.name}: no email` quando não houver e-mail.
  3. Chame-a para mia e, depois, para leo.

Pressione Run Code: a saída mostra Mia: mia@coddy.tech e Leo: no email.

Experimente você mesmo

-- 1) tipo User com um email opcional, depois mia e leo
-- 2) printContact(user: User) com uma verificação do email
-- 3) chame a função para mia, depois para leo

Todas as lições de Introdução ao Luau

Pratique por conta própria: Compilador de Luau online