Menu
CoddyTech

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ón

Una 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 up

Compara 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.

challenge icon

Desafío

Fácil

Almacena una dirección que solo puede ser uno de cuatro nombres.

  1. Escribe type Direction = "up" | "down" | "left" | "right".
  2. Declara local facing: Direction = "left".
  3. 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

Practica por tu cuenta: Compilador de Luau online