Menu
Coddy logo textTech

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 generan registros crípticos: ver 2 te dice poco, ver "down" te lo dice todo. Para enum legibles, los tipos de literal union de Luau son la herramienta: un type cuyos miembros son strings exactos:

type Direction = "up" | "down" | "left" | "right"

local facing: Direction = "up"    -- ✓
local typo: Direction = "upp"     -- ✗ error de tipo al editar

Una variable annotated con Direction puede contener esas four strings y nada más. Escribe mal one y el verificador lo detecta al instante: el error nunca llega a un player.

En runtime, los valores son plain strings. Haz print de ellos, concaténalos, compáralos con ==; todo lo que sabes sobre strings se aplica:

print(facing)            -- arriba
print(`facing {facing}`) -- facing arriba

Compara los dos patrones que tienes ahora: la tabla constante create one valor de runtime (UserRole) que contiene miembros, mientras que la literal union no create ningún valor en absoluto: no existe una tabla Direction, solo una regla que el verificador aplica sobre qué strings encajan. Valores descriptivos y autodocumentados con cero costo de runtime hacen de las literal unions el estilo de enum preferido en el código Luau.

challenge icon

Desafío

Fácil

Crea 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:

  1. upDirection
  2. downDirection
  3. leftDirection
  4. rightDirection
  5. el mensaje The player moves left, construido con interpolación de cadenas a partir de leftDirection

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
quiz iconPonte a prueba

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