Enums Numéricos com Tables
Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 56 de 80.
Aqui está o padrão de tabela de constantes completo. Escolha um nome de tabela em PascalCase, atribua um número explícito a cada membro e, a partir daí, o código usa nomes:
local UserRole = {
Admin = 1,
Editor = 2,
Viewer = 3,
}Ao contrário de enum do TypeScript, nenhum valor é numerado automaticamente. Você escolhe cada valor. Começar em 1 combina bem com as convenções de Lua, mas qualquer esquema funciona (códigos no estilo HTTP, como 200 e 404, também servem).
Os membros são especialmente úteis em comparações. Uma função que recebe uma função recebe uma função que recebe uma função? Wait.
Desafio
FácilDê nome a três níveis de dificuldade usando uma tabela de constantes.
- Crie
local Level = {Easy = 1, Normal = 2, Hard = 3}. - Escreva
local function describeLevel(level: number): string, que retorne"Relaxed"paraLevel.Easy,"Standard"paraLevel.Normale"Brutal"nos demais casos. - Imprima
Level.Harde, em seguida,describeLevel(Level.Normal).
Pressione Executar código: a saída mostra 3 e Standard.
Experimente você mesmo
-- 1) a tabela de constantes Level (Easy = 1, Normal = 2, Hard = 3)
-- 2) describeLevel(level: number): string com if/elseif/else
-- 3) imprima Level.Hard e depois describeLevel(Level.Normal)
Todas as lições de Introdução ao Luau
1Começando com o Luau
O que é Luau?Por que usar Luau?Seu primeiro código em LuauVerificação de tipos e modos de erroRecapitulando: Introdução ao Luau4Trabalhando com funções
Tipagem de parâmetros e valores de retornoTipagem de funções anônimasFunções sem retornoParâmetros opcionaisValores padrão dos parâmetrosValores padrão para booleanosFunções variádicasDefinindo tipos de funçãoRecapitulação: funções tipadas2Tipos básicos
Número, string e booleanoO tipo 'any': válvula de escapeO tipo 'unknown'Tipos nulos e opcionaisInferência de tipos na práticaAnotações explícitas de tipoRevisão: prática com tipos básicos5Aliases, Uniões, Interseções
Aliases de Tipos para PrimitivosTipos de UniãoTrabalhando com Tipos de UniãoTipos LiteraisTipos de InterseçãoCombinando Aliases de TiposRecapitulando: Combinações Avançadas de Tipos8Enums, do Jeito Luau
O Padrão Enum no LuauEnums Numéricos com TablesEnums de String como UnionsUsando Enums de Union LiteralCongelando Tables ConstantesRecapitulação: Enums, do Jeito Luau3Tabelas Tipadas: Arrays e Maps
Arrays TipadosAdicionando e Lendo ElementosO que é um Tipo Map?Declarando e Acessando MapsPercorrendo TabelasTabelas com Formatos MistosLendo uma GradeConstruindo uma Gradetable.unpackRevisão: Arrays e MapsPratique por conta própria: Compilador de Luau online