Menu
CoddyTech

Enums numériques avec des tables

Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 56 sur 80.

Voici le modèle de table de constantes dans son intégralité. Choisis un nom de table en PascalCase, attribue un nombre explicite à chaque membre et, à partir de là, le code utilise des noms :

local UserRole = {
    Admin = 1,
    Editor = 2,
    Viewer = 3,
}

Contrairement aux enum de TypeScript, les valeurs ne sont pas attribuées automatiquement. C’est toi qui choisis chaque valeur. Commencer à 1 respecte bien les conventions de Lua, mais n’importe quel système fonctionne (les codes de style HTTP comme 200 et 404 conviennent aussi).

Les membres sont particulièrement utiles dans les comparaisons. Une fonction qui reçoit un rôle peut utiliser les constantes nommées dans ses branches, plutôt que des nombres sans nom :

local function checkPermissions(role: number)
    if role == UserRole.Admin then
        print("Full access granted")
    elseif role == UserRole.Editor then
        print("Edit access granted")
    else
        print("View access only")
    end
end

Note que le paramètre est typé number : le modèle de table, à lui seul, ne limite pas les nombres autorisés. C’est précisément la garantie qu’apportent les unions littérales dans la prochaine leçon.

challenge icon

Défi

Facile

Nomme trois niveaux de difficulté à l’aide d’une table de constantes.

  1. Crée local Level = {Easy = 1, Normal = 2, Hard = 3}.
  2. Écris local function describeLevel(level: number): string qui renvoie "Relaxed" pour Level.Easy, "Standard" pour Level.Normal, et "Brutal" dans les autres cas.
  3. Affiche Level.Hard, puis describeLevel(Level.Normal).

Appuie sur Exécuter le code : le résultat affiche 3 et Standard.

Essayez vous-même

-- 1) la table de constantes Level (Easy = 1, Normal = 2, Hard = 3)
-- 2) describeLevel(level: number): string avec if/elseif/else
-- 3) afficher Level.Hard, puis describeLevel(Level.Normal)

Toutes les leçons de Introduction à Luau

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