Menu
Coddy logo textTech

El patrón Enum en Luau

Parte de la sección Introducción a Luau del Journey de Lua de Coddy — lección 51 de 73.

Los programas están llenos de valores tomados de un conjunto pequeño y fijo: un pedido está pendiente, enviado o entregado; un jugador mira hacia arriba, abajo, izquierda o derecha. Muchos lenguajes tienen una palabra clave enum para esto. Luau no la tiene — y no la necesita, porque dos herramientas que ya conoces cumplen esta función.

Patrón 1: la tabla de constantes. Una tabla simple mapea nombres significativos a valores, reemplazando los "números mágicos" dispersos en el código:

local Status = {
    Pending = 1,
    Active = 2,
    Done = 3,
}

print(Status.Active) -- 2

Este es un valor de tiempo de ejecución real: puedes leer Status.Active, compararlo y pasarlo de un lado a otro, exactamente igual que las tablas que has usado todo este tiempo.

Patrón 2: la unión literal. Un tipo compuesto por valores de cadena exactos, utilizando los tipos literales que conociste en el capítulo de uniones:

type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow"    -- ✗ type error

La unión existe solo para el comprobador — con costo cero en tiempo de ejecución —, pero garantiza que una variable no pueda contener nada fuera del conjunto. Los dos patrones se complementan entre sí: la tabla te da valores en tiempo de ejecución bajo un solo nombre; la unión te da una garantía en tiempo de compilación. Más adelante en este capítulo también conocerás table.freeze, que protege una tabla de constantes para evitar que sea modificada en tiempo de ejecución.

Pruébalo tú mismo

Esta lección no incluye un desafío de código.

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