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.

Os programas estão cheios de valores extraídos de um conjunto pequeno e fixo: um pedido está pendente, enviado ou entregue; um jogador está voltado para cima, baixo, esquerda ou direita. Muitas linguagens têm uma palavra-chave enum para isso. Luau não tem, e não precisa de uma, porque duas ferramentas que você já conhece dão conta do trabalho.

Padrão 1: a tabela de constantes. Uma tabela simples mapeia nomes significativos para valores, substituindo os “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, compará-lo, passá-lo adiante, assim como fez com as tabelas até agora.

Padrão 2: a união de literais. Um tipo composto por valores de string exatos, usando os tipos literais que você conheceu no capítulo sobre 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, sem custo em tempo de execução, mas 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 contra modificações 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

Pratique por conta própria: Compilador de Lua online