Menu
CoddyTech

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) -- 2

C’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 type

L’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.

challenge icon

Défi

Facile

Essaie les deux modèles d’énumération côte à côte.

  1. Crée la table de constantes local Speed = {Slow = 8, Fast = 24}.
  2. Écris type Pace = "slow" | "fast" et déclare local pace: Pace = "fast".
  3. Affiche Speed.Fast, puis pace.

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

Entraînez-vous par vous-même : Compilateur Luau en ligne