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 : ceux qui manquaient 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 facultatif.

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 transmettre une chaîne ou omettre entièrement 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 facultatif peut être nil ; vérifiez-le donc avant de l’utiliser : if title then ... end est le modèle standard. Ignorez cette vérification et concaténez nil à une chaîne : vous obtenez la même erreur d’exécution que celle que Lua a toujours générée ; le vérificateur de types vous avertit en premier.

challenge icon

Défi

Facile

Créez une fonction nommée createUserProfile qui accepte username: string (obligatoire) et displayName: string? (facultatif), et qui renvoie une 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 accepte price: number (obligatoire) et membershipLevel: string? (facultatif), et qui renvoie un number :

  • Lorsqu’un niveau d’adhésion est fourni, renvoyez le prix réduit de 10 % (multipliez-le 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)

FORMAT DE SORTIE REQUIS :

[Votre contenu traduit ici]

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

Entraînez-vous par vous-même : Compilateur Lua en ligne