Menu
Coddy logo textTech

Parametri opzionali

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 25 di 73.

In Lua semplice potevi sempre omettere gli argomenti: quelli mancanti diventavano silenziosamente nil, e dimenticarsi di gestire questa situazione era una classica fonte di bug. Luau rende esplicita questa possibilità: aggiungi ? al tipo di un parametro per contrassegnarlo come facoltativo.

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? si legge come "string o nil". Chi chiama la funzione può passare una stringa oppure omettere del tutto l'argomento; i parametri senza ? sono obbligatori e il controllo dei tipi segnala le chiamate in cui vengono omessi.

All'interno della funzione, un parametro facoltativo potrebbe essere nil, quindi controllalo prima di usarlo: if title then ... end è lo schema standard. Salta il controllo e concatena nil a una stringa, e otterrai lo stesso errore di runtime che Lua ha sempre generato; il controllo dei tipi ti avvisa prima.

challenge icon

Sfida

Facile

Crea una funzione chiamata createUserProfile che accetta username: string (obbligatorio) e displayName: string? (facoltativo) e restituisce una string:

  • Quando sono forniti entrambi, restituisci: "Profile: [displayName] (@[username])"
  • Quando è fornito solo il nome utente, restituisci: "Profile: @[username]"

Crea una funzione chiamata calculateDiscount che accetta price: number (obbligatorio) e membershipLevel: string? (facoltativo) e restituisce un number:

  • Quando è fornito un livello di iscrizione, restituisci il prezzo ridotto del 10% (moltiplicalo per 0.9)
  • Altrimenti, restituisci il prezzo invariato

Chiama e stampa, ciascuno su una riga separata:

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

Provalo tu

-- Scrivi il codice qui
-- createUserProfile(username: string, displayName: string?): string
-- calculateDiscount(price: number, membershipLevel: string?): number
-- poi stampa i quattro risultati
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online