Lua não possui suporte nativo à declaração de enumerador. A simulação pode ser feita, assim como
"struct", com o uso de tipo table como mostrado
na sintaxe abaixo:
Sintaxe
nome_enumerador =
{
nome_membro1 = valor_constante1
nome_membro2 = valor_constante2
nome_membroN = valor_constanteN
}
Exemplo 5
meu_enum = --enumerador
{
OPCAO0 = 0,
OPCAO1 = 1,
OPCAO2 = 2,
OPCAO3 = -1
}
--atribuição
local opcao = meu_enum.OPCAO1
print(opcao)
--verificação
if(opcao == meu_enum.OPCAO1) then
print(opcao)
end
Saída
1
1
Tables também podem ser utilizadas como valores associados a membros de "enumeradores" como
pode ser observado no exemplo abaixo. Nesse, definimos um valor constante e um nome:
Exemplo 6
local meu_enum =
{
OPCAO0 = {0, "OPCAO0"}, --table
OPCAO1 = {1, "OPCAO1"},
OPCAO2 = {2, "OPCAO2"},
OPCAO3 = {3, "OPCAO3"}
}
--atribuição
local opcao = meu_enum.OPCAO1
--verificação
if(opcao == meu_enum.OPCAO1) then
valor, nome = table.unpack(opcao) --valores do membro
print(valor, nome)
end
Saída
1 OPCAO1