Menu
Coddy logo textTech

Enums numériques avec des tables

Fait partie de la section Introduction à Luau du Journey Lua de Coddy — leçon 52 sur 73.

Construisons correctement le modèle de table de constantes. Choisissez un nom de table en PascalCase, attribuez à chaque membre un nombre explicite, et à partir de là, le code s'exprime avec des noms :

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

Contrairement à l'enum de TypeScript, rien n'est numéroté automatiquement — vous choisissez chaque valeur. Commencer à partir de 1 s'adapte très bien aux conventions de Lua, mais n'importe quel schéma fonctionne (des codes de style HTTP comme 200 et 404 conviennent très bien aussi).

Les membres brillent dans les comparaisons. Une fonction qui reçoit un rôle peut effectuer des embranchements sur les constantes nommées au lieu de simples nombres :

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

Remarquez que le paramètre est typé number — le modèle de table seul ne restreint pas quels nombres sont autorisés. Cette garantie est exactement ce que les unions de littéraux ajoutent dans la leçon suivante.

challenge icon

Défi

Facile

Créez une table constante nommée UserRole avec trois membres :

  • Admin = 1
  • Editor = 2
  • Viewer = 3

Créez une fonction checkPermissions qui prend role: number et affiche :

  • Full access granted si le rôle est UserRole.Admin
  • Edit access granted si le rôle est UserRole.Editor
  • View access only sinon

Puis, dans l'ordre :

  1. affichez UserRole.Admin
  2. affichez UserRole.Editor
  3. affichez UserRole.Viewer
  4. appelez checkPermissions(UserRole.Admin)
  5. appelez checkPermissions(UserRole.Editor)
  6. appelez checkPermissions(UserRole.Viewer)

Essayez vous-même

-- Écrivez le code ici
-- 1) créez la table de constantes UserRole (Admin=1, Editor=2, Viewer=3)
-- 2) écrivez checkPermissions(role: number) avec if/elseif/else
-- 3) affichez les trois membres, puis appelez la fonction pour chacun
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