Enums de String como Unions
Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 53 de 73.
Números tornam os logs enigmáticos: ver 2 diz pouco, ver "down" diz tudo. Para enumerações legíveis, os tipos de união literal do Luau são a ferramenta: um tipo cujos membros são strings exatas:
type Direction = "up" | "down" | "left" | "right"
local facing: Direction = "up" -- ✓
local typo: Direction = "upp" -- ✗ erro de tipo ao editarUma variável anotada com Direction pode conter essas quatro strings e nada mais. Se você escrever uma delas incorretamente, o verificador detectará o erro instantaneamente: o bug nunca chega a um jogador.
Em tempo de execução, os valores são strings comuns. Imprima-as, concatene-as, compare-as com ==. Tudo o que você sabe sobre strings se aplica:
print(facing) -- cima
print(`facing {facing}`) -- facing cimaCompare os dois padrões que você tem agora: a tabela de constantes cria um valor em tempo de execução (UserRole) que contém membros, enquanto a união literal não cria valor algum. Não existe uma tabela Direction, apenas uma regra que o verificador impõe sobre quais strings são válidas. Valores descritivos e autoexplicativos, com custo de execução zero, fazem das uniões literais o estilo preferido de enumeração no código Luau.
Desafio
FácilCrie um tipo de união literal chamado Direction com os membros "up", "down", "left" e "right".
Crie quatro variáveis, cada uma anotada com Direction:
upDirection="up"downDirection="down"leftDirection="left"rightDirection="right"
Imprima, cada um em sua própria linha:
upDirectiondownDirectionleftDirectionrightDirection- a mensagem
The player moves left, criada com interpolação de string a partir deleftDirection
Experimente você mesmo
-- Escreva o código aqui
-- 1) defina o tipo Direction como uma união dos quatro literais de string
-- 2) crie as quatro variáveis anotadas
-- 3) imprima cada uma, depois a mensagem interpolada
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
1Começando com o Luau
O que é Luau?Por que usar Luau?Seu primeiro código em LuauVerificação de tipos e modos de erroRecapitulando: Introdução ao Luau4Trabalhando com Funções
Tipando Parâmetros e Valores de RetornoTipando Funções AnônimasFunções que Não Retornam NadaParâmetros OpcionaisValores Padrão para ParâmetrosFunções VariádicasDefinindo Tipos de FunçõesRecapitulação: Funções Tipadas2Tipos Fundamentais
Tipos Básicos: num, str, boolO Tipo 'any': Escape HatchO Tipo 'unknown'Tipos Nil e OpcionaisInferência de Tipos na PráticaAnotações Explícitas de TiposReciclagem: Prática de Tipos Fundamentais5Aliases, Uniões, Interseções
Aliases de Tipos para PrimitivosTipos de UniãoTrabalhando com Tipos de UniãoTipos LiteraisTipos de InterseçãoCombinando Aliases de TiposRecapitulando: Combinações Avançadas de Tipos8Enums, do Jeito Luau
O Padrão Enum no LuauEnums Numéricos com TablesEnums de String como UnionsUsando Enums de Union LiteralCongelando Tables ConstantesRecapitulação: Enums, do Jeito Luau3Tabelas Tipadas: Arrays e Maps
Arrays TipadosAdicionando e Lendo ElementosO que é um Tipo Map?Declarando e Acessando MapsIterando Sobre TabelasTabelas de Formato MistoArrays Tipados Multidimensionaistable.unpack e VarargsRecapitulando: Arrays e MapsPratique por conta própria: Compilador de Lua online