Menu
Coddy logo textTech

Paramètres optionnels

Fait partie de la section Introduction à Luau du Journey Lua de Coddy — leçon 25 sur 73.

En Lua classique, vous pouviez toujours omettre des arguments — les arguments manquants devenaient silencieusement nil, et oublier de gérer ce cas était une source classique de bugs. Luau rend cette possibilité explicite : ajoutez ? au type d'un paramètre pour le marquer comme optionnel.

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

print(greet("Ada"))          -- Bonjour, Ada
print(greet("Ada", "Dr."))   -- Dr. Ada

string? se lit "string ou nil". Les appelants peuvent passer une chaîne de caractères ou omettre complètement l'argument ; les paramètres sans ? sont obligatoires, et le vérificateur signale les appels qui les omettent.

À l'intérieur de la fonction, un paramètre optionnel peut être nil, il faut donc le vérifier avant de l'utiliser — if title then ... end est le motif standard. Si vous sautez la vérification et concaténez nil dans une chaîne, vous obtiendrez la même erreur d'exécution que Lua a toujours produite ; le vérificateur de types vous avertit au préalable.

challenge icon

Défi

Facile

Créez une fonction nommée createUserProfile qui prend username: string (obligatoire) et displayName: string? (optionnel), renvoyant un string :

  • Lorsque les deux sont fournis, renvoyez : "Profile: [displayName] (@[username])"
  • Lorsque seul le nom d'utilisateur est fourni, renvoyez : "Profile: @[username]"

Créez une fonction nommée calculateDiscount qui prend price: number (obligatoire) et membershipLevel: string? (optionnel), renvoyant un number :

  • Lorsqu'un niveau d'adhésion est fourni, renvoyez le prix réduit de 10 % (multipliez par 0.9)
  • Sinon, renvoyez le prix inchangé

Appelez et affichez, chacun sur sa propre ligne :

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

Essayez vous-même

-- Écrivez le code ici
-- createUserProfile(username: string, displayName: string?): string
-- calculateDiscount(price: number, membershipLevel: string?): number
-- puis affichez les quatre résultats
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Introduction à Luau