Menu
Coddy logo textTech

Enums Numéricos com Tables

Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 52 de 73.

Vamos construir o padrão de tabela constante adequadamente. Escolha um nome de tabela em PascalCase, atribua a cada membro um número explícito e, a partir daí, o código fala em nomes:

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

Diferente do enum do TypeScript, nada é numerado automaticamente — você escolhe cada valor. Começar a partir de 1 se adapta muito bem às convenções do Lua, mas qualquer esquema funciona (códigos no estilo HTTP como 200 e 404 também funcionam bem).

Os membros se destacam em comparações. Uma função que recebe um role pode se ramificar com base nas constantes nomeadas em vez de números puros:

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

Observe que o parâmetro é tipado como number — o padrão de tabela sozinho não restringe quais números são permitidos. Essa garantia é exatamente o que as uniões de literais adicionam na próxima lição.

challenge icon

Desafio

Fácil

Crie uma tabela constante chamada UserRole com três membros:

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

Crie uma função checkPermissions que recebe role: number e imprime:

  • Full access granted se o papel for UserRole.Admin
  • Edit access granted se o papel for UserRole.Editor
  • View access only caso contrário

Em seguida, na ordem:

  1. imprima UserRole.Admin
  2. imprima UserRole.Editor
  3. imprima UserRole.Viewer
  4. chame checkPermissions(UserRole.Admin)
  5. chame checkPermissions(UserRole.Editor)
  6. chame checkPermissions(UserRole.Viewer)

Experimente você mesmo

-- Escreva o código aqui
-- 1) crie a tabela constante UserRole (Admin=1, Editor=2, Viewer=3)
-- 2) escreva checkPermissions(role: number) com if/elseif/else
-- 3) imprima os três membros, depois chame a função para cada um
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Introdução ao Luau