Menu
Coddy logo textTech

Propiedades opcionales

Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 39 de 73.

No todos los campos están siempre presentes. En Lua, un campo de tabla que falta simplemente se lee como nil — lo cual es flexible, pero también es la forma en que se cuelan errores como attempt to concatenate a nil value.

Luau permite que una forma lo exprese explícitamente: añade ? después del tipo de un campo para marcarlo como opcional:

type User = {
    name: string,   -- requerido
    email: string?, -- opcional: string o nil
}

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

Ya has visto esto antes con variables: string? es una forma abreviada de string | nil. La misma idea se aplica ahora a los campos individuales de una forma.

Dado que un campo opcional puede ser nil, debes comprobarlo antes de usarlo. El patrón clásico de Lua funciona, y en modo estricto el verificador reduce el tipo dentro de la rama:

if bob.email then
    print(`email: {bob.email}`) -- aquí email es un string
else
    print("no email on file")
end

Opcional significa "puede estar ausente" — no significa "cualquier tipo". Si email existe, aún debe ser un string.

challenge icon

Desafío

Fácil

Crea un alias de tipo llamado User con:

  • name de tipo string (obligatorio)
  • email de tipo string? (opcional)

Crea dos usuarios:

  • alice — nombre "Alice", email "alice@luau.dev"
  • bob — nombre "Bob", sin email

Crea una función printContact que reciba un User. Si el usuario tiene un email, imprime [name] - [email]; de lo contrario, imprime [name] - no email.

Después:

  1. llama a printContact(alice)
  2. llama a printContact(bob)
  3. imprime el resultado de comparar bob.email == nil

Pruébalo tú mismo

-- Escribe código aquí
-- 1) define el tipo User con un campo email opcional
-- 2) crea alice (con email) y bob (sin)
-- 3) escribe printContact con una comprobación de nil
-- 4) llámalo para ambos usuarios, luego imprime bob.email == nil
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Introducción a Luau

Practica por tu cuenta: Compilador de Lua online