Enums numériques avec des tables
Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 56 sur 80.
Voici le modèle de table de constantes dans son intégralité. Choisis un nom de table en PascalCase, attribue un nombre explicite à chaque membre et, à partir de là, le code utilise des noms :
local UserRole = {
Admin = 1,
Editor = 2,
Viewer = 3,
}Contrairement aux enum de TypeScript, les valeurs ne sont pas attribuées automatiquement. C’est toi qui choisis chaque valeur. Commencer à 1 respecte bien les conventions de Lua, mais n’importe quel système fonctionne (les codes de style HTTP comme 200 et 404 conviennent aussi).
Les membres sont particulièrement utiles dans les comparaisons. Une fonction qui reçoit un rôle peut utiliser les constantes nommées dans ses branches, plutôt que des nombres sans nom :
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
FacileNomme trois niveaux de difficulté à l’aide d’une table de constantes.
- Crée
local Level = {Easy = 1, Normal = 2, Hard = 3}. - Écris
local function describeLevel(level: number): stringqui renvoie"Relaxed"pourLevel.Easy,"Standard"pourLevel.Normal, et"Brutal"dans les autres cas. - Affiche
Level.Hard, puisdescribeLevel(Level.Normal).
Appuie sur Exécuter le code : le résultat affiche 3 et Standard.
Essayez vous-même
-- 1) la table de constantes Level (Easy = 1, Normal = 2, Hard = 3)
-- 2) describeLevel(level: number): string avec if/elseif/else
-- 3) afficher Level.Hard, puis describeLevel(Level.Normal)
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
Typer les paramètres et les valeurs de retourTyper les fonctions anonymesFonctions sans valeur de retourParamètres optionnelsValeurs par défaut des paramètresValeurs par défaut pour les booléensFonctions variadiquesDéfinir des types de fonctionsRécapitulatif : fonctions typées7Projet : gestionnaire de tâches typé
Projet : la structure d’une tâcheFonction pour ajouter une tâche2Types fondamentaux
Nombre, chaîne de caractères et booléenLe type « any » : une échappatoireLe type « unknown »Types nil et optionnelsL’inférence de types en actionAnnotations de type explicitesRécapitulatif : exercices sur les 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ésAjouter et lire des élémentsQu’est-ce qu’un type Map ?Déclarer et accéder aux mapsParcourir les tablesTables de formes mixtesLire une grilleConstruire une grilletable.unpackRécapitulatif : tableaux et mapsEntraînez-vous par vous-même : Compilateur Luau en ligne