Enums de cadena como uniones
Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 53 de 73.
Los números hacen que los registros crípticos: ver 2 te dice poco; ver "down" te lo dice todo. Para obtener enumeraciones legibles, las uniones 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 al editarUna variable anotada con Direction puede contener esas cuatro cadenas y nada más. Escribe una incorrectamente y el comprobador 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, compáralas con ==. Todo lo que sabes sobre las cadenas se aplica:
print(facing) -- arriba
print(`facing {facing}`) -- facing arribaCompara 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 ninguna tabla Direction, solo una regla que el comprobador hace cumplir sobre qué cadenas encajan. Los valores descriptivos y autoexplicativos, con un costo de ejecución nulo, hacen que las uniones de literales sean el estilo de enumeración preferido en el código de Luau.
Desafío
FácilCrea un tipo de unión literal llamado Direction con los miembros "up", "down", "left" y "right".
Crea cuatro variables, cada una anotada con Direction:
upDirection="up"downDirection="down"leftDirection="left"rightDirection="right"
Imprime, cada uno en su propia línea:
upDirectiondownDirectionleftDirectionrightDirection- el mensaje
The player moves left, construido mediante interpolación de strings a partir deleftDirection
Pruébalo tú mismo
-- Escribe código aquí
-- 1) define el tipo Direction como una unión de los cuatro literales de cadena
-- 2) crea las cuatro variables anotadas
-- 3) imprime cada una, luego el mensaje interpolado
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
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 Luau4Trabajando con Funciones
Tipado de Parámetros y Valores de RetornoTipado de Funciones AnónimasFunciones que no Retornan NadaParámetros OpcionalesValores por Defecto en ParámetrosFunciones VariádicasDefinición de Tipos de FuncionesRecapitulaciones: Funciones Tipadas2Tipos principales
Tipos básicos: num, str, boolEl tipo 'any': Vía de escapeEl tipo 'unknown'Tipos nulos y opcionalesInferencia de tipos en acciónAnotaciones explícitas de tiposResumen: Práctica de tipos principales5Alias, 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 Maps
Arrays tipadosAñadir y leer elementos¿Qué es un tipo Map?Declarar y acceder a MapsIterar tablasTablas de forma mixtaArrays tipados multidimensionalestable.unpack y VarargsRecapitulaciones: Arrays y MapsPractica por tu cuenta: Compilador de Lua online