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. Choisis un nom de table en PascalCase, attribue un nombre explicite à chaque membre, 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. C’est toi qui choisis chaque valeur. Commencer à 1 correspond bien aux conventions de Lua, mais n’importe quel système fonctionne (des codes de type HTTP comme 200 et 404 conviennent également).

Les membres sont particulièrement utiles dans les comparaisons. Une fonction qui reçoit un rôle peut utiliser les constantes nommées pour effectuer des branchements plutôt que de recourir à des nombres bruts :

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

Créez une table de constantes 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 dans les autres cas

Ensuite, dans l’ordre :

  1. afficher UserRole.Admin
  2. afficher UserRole.Editor
  3. afficher UserRole.Viewer
  4. appeler checkPermissions(UserRole.Admin)
  5. appeler checkPermissions(UserRole.Editor)
  6. appeler 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

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