Menu
CoddyTech

Propiedades opcionales

Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 41 de 80.

No todos los campos están siempre presentes. En Lua, un campo que falta en una tabla 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 indicar esto explícitamente en una forma: añade ? después del tipo de un campo para marcarlo como opcional:

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

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

Ya habías visto esto con las variables: string? es una forma abreviada de string | nil. Ahora la misma idea se aplica a los campos individuales de una forma.

Como un campo opcional podría ser nil, debes comprobarlo antes de usarlo. El patrón clásico de Lua funciona y, en modo estricto, el verificador acota el tipo dentro de la rama:

if bob.email then
    print(`email: {bob.email}`) -- aquí email es una cadena de texto
else
    print("no email on file")
end

Opcional significa «puede estar ausente». No significa «cualquier tipo». Si email existe, debe seguir siendo una cadena.

challenge icon

Desafío

Fácil

Imprime los contactos cuyo correo electrónico podría faltar.

  1. Escribe type User = {name: string, email: string?}, después local mia: User = {name = "Mia", email = "mia@coddy.tech"} y local leo: User = {name = "Leo"}.
  2. Escribe local function printContact(user: User) para imprimir `{user.name}: {user.email}` o, si no tiene correo electrónico, `{user.name}: no email`.
  3. Llama a la función para mia y después para leo.

Presiona Run Code: el resultado muestra Mia: mia@coddy.tech y Leo: no email.

Pruébalo tú mismo

-- 1) define el tipo User con un email opcional, luego mia y leo
-- 2) define printContact(user: User) con una comprobación del email
-- 3) llama a printContact para mia y luego para leo

Todas las lecciones de Introducción a Luau

Practica por tu cuenta: Compilador de Luau online