Menu
Coddy logo textTech

O Padrão Enum no Luau

Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 51 de 73.

Programas estão cheios de valores vindos de um conjunto pequeno e fixo: um pedido está pendente, enviado ou entregue; um jogador está virado para cima, baixo, esquerda ou direita. Muitas linguagens têm uma palavra-chave enum para isso. O Luau não tem — e não precisa de uma, porque duas ferramentas que você já possui resolvem o trabalho.

Padrão 1: a tabela de constantes. Uma tabela simples mapeia nomes significativos para valores, substituindo "números mágicos" espalhados pelo código:

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

print(Status.Active) -- 2

Este é um valor real em tempo de execução: você pode ler Status.Active, comparar com ele e passá-lo adiante — assim como as tabelas que você usou até agora.

Padrão 2: a união literal. Um tipo feito de valores exatos de string, usando os tipos literais que você conheceu no capítulo de uniões:

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

A união existe apenas para o verificador de tipos — custo zero em tempo de execução —, mas ela garante que uma variável não possa conter nada fora do conjunto. Os dois padrões se complementam: a tabela fornece valores em tempo de execução sob um único nome; a união fornece uma garantia em tempo de compilação. Mais adiante neste capítulo, você também conhecerá table.freeze, que protege uma tabela de constantes de ser modificada em tempo de execução.

Experimente você mesmo

Esta lição não inclui um desafio de código.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Introdução ao Luau