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 provenant d’un ensemble restreint et fixe : une commande est en attente, expédiée ou livrée ; un joueur fait face vers le haut, le bas, la gauche ou la droite. De nombreux langages possèdent un mot-clé enum pour cela. Luau n’en possède pas, et n’en a pas besoin, car deux outils que tu maîtrises déjà couvrent ce besoin.
Modèle 1 : la table de constantes. Une table ordinaire 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 véritable valeur à l’exécution : tu peux lire Status.Active, la comparer et la transmettre, tout comme les tables que tu as utilisées jusqu’à présent.
Modèle 2 : l’union de littéraux. Un type constitué de valeurs de chaîne exactes, utilisant les types littéraux que tu as découverts dans le chapitre sur les unions :
type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow" -- ✗ erreur de typeL’union n’existe que pour le vérificateur, sans aucun coût à l’exécution, mais elle garantit qu’une variable ne peut contenir aucune valeur en dehors de l’ensemble. Les deux modèles se complètent : la table te fournit des valeurs à l’exécution sous un même nom ; l’union te fournit une garantie à la compilation. Plus loin dans ce chapitre, tu découvriras é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 MapsEntraînez-vous par vous-même : Compilateur Lua en ligne