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. Adastring? 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.
Défi
FacileCré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 :
createUserProfile("john_doe", "John Doe")createUserProfile("jane_smith")calculateDiscount(100, "premium")calculateDiscount(75)
FORMAT DE SORTIE REQUIS :
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
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
1Premiers pas avec Luau
Qu'est-ce que Luau ?Pourquoi utiliser Luau ?Votre premier code LuauVérification de type et modes d'erreurRécapitulatif : Introduction à Luau4Travailler avec les fonctions
Typage des paramètres et valeurs de retourTypage des fonctions anonymesFonctions ne retournant rienParamètres optionnelsValeurs par défaut des paramètresFonctions variadiquesDéfinition des types de fonctionsRécapitulatif : Fonctions typées2Types fondamentaux
Types de base : num, str, boolLe type 'any' : la porte de sortieLe type 'unknown'Types Nil et optionnelsL'inférence de type en actionAnnotations explicites de typeRécapitulatif : Pratique des types fondamentaux5Alias, unions et intersections
Alias de types pour les types primitifsTypes unionsTravailler avec les types unionsTypes littérauxTypes intersectionsCombinaison d'alias de typesRécapitulatif : Combinaisons de types avancées3Tables typées : Tableaux et Maps
Tableaux typésAjout et lecture d'élémentsQu'est-ce qu'un type Map ?Déclaration et accès aux MapsItération sur les tablesTables à formes mixtesTableaux typés multidimensionnelstable.unpack et VarargsRécapitulatif : Tableaux et MapsEntraînez-vous par vous-même : Compilateur Lua en ligne