Enums numériques avec des tables
Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 52 sur 73.
Construisons correctement le modèle de table de constantes. Choisis un nom de table en PascalCase, attribue un nombre explicite à chaque membre, et à partir de là, le code s’exprime avec des noms :
local UserRole = {
Admin = 1,
Editor = 2,
Viewer = 3,
}Contrairement à l’enum de TypeScript, rien n’est numéroté automatiquement. C’est toi qui choisis chaque valeur. Commencer à 1 correspond bien aux conventions de Lua, mais n’importe quel système fonctionne (des codes de type HTTP comme 200 et 404 conviennent également).
Les membres sont particulièrement utiles dans les comparaisons. Une fonction qui reçoit un rôle peut utiliser les constantes nommées pour effectuer des branchements plutôt que de recourir à des nombres bruts :
local function checkPermissions(role: number)
if role == UserRole.Admin then
print("Full access granted")
elseif role == UserRole.Editor then
print("Edit access granted")
else
print("View access only")
end
endNote que le paramètre est typé number : le modèle de table à lui seul ne limite pas les nombres autorisés. C’est précisément la garantie qu’apportent les unions littérales dans la prochaine leçon.
Défi
FacileCréez une table de constantes nommée UserRole avec trois membres :
Admin=1Editor=2Viewer=3
Créez une fonction checkPermissions qui prend role: number et affiche :
Full access grantedsi le rôle estUserRole.AdminEdit access grantedsi le rôle estUserRole.EditorView access onlydans les autres cas
Ensuite, dans l’ordre :
- afficher
UserRole.Admin - afficher
UserRole.Editor - afficher
UserRole.Viewer - appeler
checkPermissions(UserRole.Admin) - appeler
checkPermissions(UserRole.Editor) - appeler
checkPermissions(UserRole.Viewer)
Essayez vous-même
-- Écrivez le code ici
-- 1) créez la table de constantes UserRole (Admin=1, Editor=2, Viewer=3)
-- 2) écrivez checkPermissions(role: number) avec if/elseif/else
-- 3) affichez les trois membres, puis appelez la fonction pour chacun
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ées8Les Enums, à la manière de Luau
Le pattern Enum dans LuauEnums numériques avec des tablesEnums de chaînes comme unionsUtiliser des Enums d'unions littéralesGeler les tables de constantesRécapitulatif : Les Enums, à la manière de Luau3Tables 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