Enums numéricos con tablas
Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 56 de 80.
Aquí tienes el patrón de tabla de constantes completo. Elige un nombre de tabla en PascalCase, asigna un número explícito a cada miembro y, a partir de entonces, el código se expresa mediante nombres:
local UserRole = {
Admin = 1,
Editor = 2,
Viewer = 3,
}A diferencia de enum de TypeScript, los valores no se numeran automáticamente. Tú eliges cada valor. Empezar por 1 encaja bien con las convenciones de Lua, pero cualquier esquema sirve (también valen códigos al estilo HTTP como 200 y 404).
Los miembros resultan útiles en las comparaciones. Una función que recibe un rol puede ramificarse según las constantes con nombre en lugar de usar números sin más:
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
endObserva que el parámetro tiene el tipo number: el patrón de tabla por sí solo no restringe qué números se permiten. Esa garantía es precisamente lo que añaden las uniones de literales en la siguiente lección.
Desafío
FácilNombra tres niveles de dificultad con una tabla de constantes.
- Crea
local Level = {Easy = 1, Normal = 2, Hard = 3}. - Escribe
local function describeLevel(level: number): stringque devuelva"Relaxed"paraLevel.Easy,"Standard"paraLevel.Normaly, en caso contrario,"Brutal". - Imprime
Level.Hardy despuésdescribeLevel(Level.Normal).
Pulsa Ejecutar código: la salida muestra 3 y Standard.
Pruébalo tú mismo
-- 1) la tabla de constantes Level (Easy = 1, Normal = 2, Hard = 3)
-- 2) describeLevel(level: number): string con if/elseif/else
-- 3) imprime Level.Hard y luego describeLevel(Level.Normal)
Todas las lecciones de Introducción a Luau
1Primeros pasos con Luau
¿Qué es Luau?¿Por qué usar Luau?Tu primer código en LuauComprobación de tipos y modos de errorRecapitulacion: Introducción a Luau4Trabajar con funciones
Tipado de parámetros y valores de retornoTipado de funciones anónimasFunciones que no devuelven nadaParámetros opcionalesValores predeterminados de parámetrosValores predeterminados para booleanosFunciones variádicasDefinir tipos de funcionesRepaso: funciones tipadas7Proyecto: Gestor de tareas tipado
Proyecto: La estructura de una tareaFunción para añadir una tarea2Tipos fundamentales
Número, cadena y booleanoEl tipo 'any': una salida de emergenciaEl tipo 'unknown'Tipos nulos y opcionalesLa inferencia de tipos en acciónAnotaciones de tipo explícitasRepaso: práctica de tipos fundamentales5Alias, Uniones e Intersecciones
Alias de tipos para primitivosTipos de uniónTrabajando con tipos de uniónTipos literalesTipos de intersecciónCombinando alias de tiposResumen: Combinaciones avanzadas de tipos8Enums al estilo de Luau
El patrón Enum en LuauEnums numéricos con tablasEnums de cadena como unionesUso de uniones literales como EnumsCongelación de tablas constantesRecapitulación: Enums al estilo de Luau3Tablas tipadas: arrays y mapas
Arrays tipadosAgregar y leer elementos¿Qué es un tipo mapa?Declarar y acceder a mapasRecorrer tablasTablas de formas mixtasLeer una cuadrículaConstruir una cuadrículatable.unpackRepaso: arrays y mapasPractica por tu cuenta: Compilador de Luau online