Menu
Coddy logo textTech

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

Il 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 error

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

quiz iconTestez-vous

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