Le pattern Enum dans Luau
Fait partie de la section Introduction à Luau du Journey Lua de Coddy — leçon 51 sur 73.
Les programmes regorgent de valeurs issues d'un ensemble restreint et fixe : une commande est en attente, expédiée ou livrée ; un joueur regarde vers le haut, le bas, la gauche ou la droite. De nombreux langages disposent d'un mot-clé enum pour cela. Luau n'en a pas — et il n'en a pas besoin, car deux outils que vous possédez déjà font l'affaire.
Modèle 1 : la table de constantes. Une table simple associe des noms explicites à des valeurs, remplaçant les « nombres magiques » dispersés dans le code :
local Status = {
Pending = 1,
Active = 2,
Done = 3,
}
print(Status.Active) -- 2Il s'agit d'une vraie valeur d'exécution : vous pouvez lire Status.Active, la comparer et la transmettre — tout comme les tables que vous utilisez depuis le début.
Modèle 2 : l'union littérale. Un type composé de valeurs de chaînes exactes, utilisant les types littéraux que vous avez découverts dans le chapitre sur les unions :
type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow" -- ✗ type errorL'union n'existe que pour le vérificateur de types — aucun coût à l'exécution — mais elle garantit qu'une variable ne peut rien contenir en dehors de cet ensemble. Les deux modèles se complètent : la table vous donne des valeurs à l'exécution sous un seul nom ; l'union vous donne une garantie à la compilation. Plus loin dans ce chapitre, vous découvrirez également table.freeze, qui protège une table de constantes contre toute modification à l'exécution.
Essayez vous-même
Cette leçon ne comprend pas de défi de code.
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 Maps