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. Adastring? 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.
Défi
FacileCré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 :
createUserProfile("john_doe", "John Doe")createUserProfile("jane_smith")calculateDiscount(100, "premium")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
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 Maps