Menu
Coddy logo textTech

Valori predefiniti dei parametri

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

I parametri opzionali ti lasciano un nil da gestire. Spesso quello che vuoi davvero è un valore di ripiego: "se chi chiama non ha specificato nulla, supponi X". Luau non ha una sintassi predefinita nella firma (non esiste greeting: string = "Hello"); invece, si usa la classica convenzione di Lua, ora con i tipi:

function greet(name: string, greeting: string?): string
    greeting = greeting or "Hello"
    return `{greeting}, {name}`
end

print(greet("Alice"))            -- Hello, Alice
print(greet("Alice", "Howdy"))   -- Howdy, Alice

Il parametro è contrassegnato come opzionale (string?) e la prima riga del corpo sostituisce nil con il valore predefinito. Funziona perché nil è falso: nil or "Hello" restituisce "Hello". Dopo quella riga, il controllo dei tipi sa che greeting non può più essere nil.

Una precisazione che conosci già da Lua: or sostituisce anche false! Per un parametro boolean?, flag = flag or true sovrascriverebbe silenziosamente un false esplicito. Usa invece un controllo esplicito di nil:

function ship(weight: number, expedited: boolean?): number
    if expedited == nil then
        expedited = false
    end
    -- ...
end
challenge icon

Sfida

Facile

Crea una funzione chiamata calculateTax che accetta price: number (obbligatorio) e rate: number? con valore predefinito 0.05. Restituisci l’importo delle imposte (price * rate) come number.

Crea una funzione chiamata formatGreeting che accetta name: string (obbligatorio) e timeOfDay: string? con valore predefinito "Hello". Restituisci "[timeOfDay], [name]!" come string.

Crea una funzione chiamata calculateShipping che accetta weight: number, distance: number (entrambi obbligatori) e expedited: boolean? con valore predefinito false: per questo usa un controllo esplicito di nil! Calcola (weight * 0.5) + (distance * 0.1) e, se expedited è true, moltiplica il risultato per 2. Restituisci un number.

Chiama e stampa, ciascuno su una riga separata:

  1. calculateTax(100)
  2. calculateTax(200, 0.08)
  3. formatGreeting("Alice")
  4. formatGreeting("Bob", "Good morning")
  5. calculateShipping(5, 100)
  6. calculateShipping(3, 50, true)

Provalo tu

-- Scrivi il codice qui
-- calculateTax(price: number, rate: number?) -- valore predefinito di rate: 0.05
-- formatGreeting(name: string, timeOfDay: string?) -- valore predefinito: "Hello"
-- calculateShipping(weight, distance, expedited: boolean?) -- valore predefinito: false
-- poi stampa i sei 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