Enums de cadena como uniones
Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 57 de 80.
Los números generan registros crípticos: ver 2 te dice poco; ver "down" te lo dice todo. Para crear enumeraciones legibles, los tipos de unión de literales de Luau son la herramienta adecuada: un tipo cuyos miembros son cadenas exactas:
type Direction = "up" | "down" | "left" | "right"
local facing: Direction = "up" -- ✓
local typo: Direction = "upp" -- ✗ error de tipo durante la ediciónUna variable anotada con Direction puede contener esas cuatro cadenas y nada más. Si escribes mal una, el verificador la detecta al instante: el error nunca llega a un jugador.
En tiempo de ejecución, los valores son cadenas simples. Imprímelas, concaténalas y compáralas con ==. Todo lo que sabes sobre las cadenas se aplica:
print(facing) -- up
print(`facing {facing}`) -- facing upCompara los dos patrones que tienes ahora: la tabla de constantes crea un valor en tiempo de ejecución (UserRole) que contiene miembros, mientras que la unión de literales no crea ningún valor. No existe una tabla Direction, solo una regla que el verificador aplica sobre qué cadenas son válidas. Los valores descriptivos y autodocumentados, con un costo nulo en tiempo de ejecución, hacen de las uniones de literales el estilo de enumeración preferido en el código de Luau.
Desafío
FácilAlmacena una dirección que solo puede ser uno de cuatro nombres.
- Escribe
type Direction = "up" | "down" | "left" | "right". - Declara
local facing: Direction = "left". - Imprime
facing, después`The player moves {facing}`.
Pulsa Run Code: la salida muestra left y The player moves left.
Pruébalo tú mismo
-- 1) define el tipo Direction como una unión de cuatro cadenas
-- 2) local facing: Direction = "left"
-- 3) imprime facing y luego la oración
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