Le pattern Enum dans Luau
Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 55 sur 80.
Les programmes regorgent de valeurs issues d’un ensemble restreint et fixe : une commande est pending, shipped ou delivered ; un joueur regarde vers le up, le down, le left ou le right. De nombreux langages ont un mot-clé enum pour cela. Luau n’en a pas, et n’en a pas besoin, car deux outils que tu possèdes déjà font l’affaire.
Modèle 1 : la table de constantes. Une simple table associe des noms significatifs à des valeurs et remplace les « nombres magiques » dispersés dans le code :
local Status = {
Pending = 1,
Active = 2,
Done = 3,
}
print(Status.Active) -- 2C’est une véritable valeur à l’exécution : tu peux lire Status.Active, faire une comparaison avec elle et la transmettre, comme tu l’as toujours fait avec les tables.
Modèle 2 : l’union de littéraux. Un type composé de valeurs de chaîne exactes, à l’aide des types littéraux 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 donne des valeurs à l’exécution sous un même nom ; l’union te donne une garantie à la compilation. Plus loin dans ce chapitre, tu découvriras aussi table.freeze, qui empêche la modification d’une table de constantes à l’exécution.
Défi
FacileEssaie les deux modèles d’énumération côte à côte.
- Crée la table de constantes
local Speed = {Slow = 8, Fast = 24}. - Écris
type Pace = "slow" | "fast"et déclarelocal pace: Pace = "fast". - Affiche
Speed.Fast, puispace.
Appuie sur Run Code : la sortie affiche 24 et fast.
Essayez vous-même
-- 1) une table constante Speed avec Slow = 8, Fast = 24
-- 2) type Pace = "slow" | "fast", puis local pace: Pace = "fast"
-- 3) afficher Speed.Fast, puis pace
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