Menu
Coddy logo textTech

Parámetros Opcionales

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

En Lua puro siempre podías omitir argumentos: los que faltaban se convertían silenciosamente en nil, y olvidarse de gestionar eso era una fuente clásica de errores. Luau hace explícita esta posibilidad: añade ? al tipo de un parámetro para marcarlo como opcional.

function greet(name: string, title: string?): string
    if title then
        return `{title} {name}`
    end
    return `Hello, {name}`
end

print(greet("Ada"))          -- Hola, Ada
print(greet("Ada", "Dr."))   -- Dra. Ada

string? se interpreta como "string o nil". Los llamadores pueden pasar una cadena u omitir el argumento por completo; los parámetros sin ? son obligatorios, y el comprobador marca las llamadas que los omiten.

Dentro de la función, un parámetro opcional podría ser nil, así que compruébalo antes de usarlo: if title then ... end es el patrón estándar. Omite la comprobación y concatena nil en una cadena, y obtendrás el mismo error de ejecución que Lua siempre te daba; el comprobador de tipos te avisa primero.

challenge icon

Desafío

Fácil

Crea una función llamada createUserProfile que acepte username: string (obligatorio) y displayName: string? (opcional), y devuelva un string:

  • Cuando se proporcionen ambos, devuelve: "Profile: [displayName] (@[username])"
  • Cuando solo se proporcione el nombre de usuario, devuelve: "Profile: @[username]"

Crea una función llamada calculateDiscount que acepte price: number (obligatorio) y membershipLevel: string? (opcional), y devuelva un number:

  • Cuando se proporcione un nivel de membresía, devuelve el precio reducido en un 10 % (multiplícalo por 0.9)
  • De lo contrario, devuelve el precio sin cambios

Llama a las funciones e imprime cada resultado en su propia línea:

  1. createUserProfile("john_doe", "John Doe")
  2. createUserProfile("jane_smith")
  3. calculateDiscount(100, "premium")
  4. calculateDiscount(75)

Pruébalo tú mismo

-- Escribe código aquí
-- createUserProfile(username: string, displayName: string?): string
-- calculateDiscount(price: number, membershipLevel: string?): number
-- luego imprime los cuatro resultados
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