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 extraídos 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 tienes cubren esta función.
Patrón 1: la tabla de constantes. Una tabla sencilla asigna valores a nombres significativos, reemplazando los «números mágicos» dispersos por el código:
local Status = {
Pending = 1,
Active = 2,
Done = 3,
}
print(Status.Active) -- 2Este es un valor real en tiempo de ejecución: puedes leer Status.Active, compararlo con otros valores y pasarlo de un lado a otro, igual que las tablas que has usado hasta ahora.
Patrón 2: la unión de literales. Un tipo formado por valores de cadena exactos, usando los tipos literales que conociste en el capítulo sobre uniones:
type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow" -- ✗ type errorLa unión existe únicamente para el comprobador, no tiene ningún coste en tiempo de ejecución, pero garantiza que una variable no pueda contener nada fuera del conjunto. Los dos patrones se complementan: la tabla te proporciona valores en tiempo de ejecución bajo un mismo nombre; la unión te proporciona 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 que no se modifique en tiempo de ejecución.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
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