Tabelas de Formato Misto
Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 18 de 73.
Arrays armazenam muitos valores de um type; maps armazenam um type de chave e um type de valor. Mas suas tabelas Lua mais comuns misturam tipos sob named fields — um player com um nome string, um score number, uma flag boolean. O Luau tipa estes com uma shape: um type de tabela que lista each field e its own type.
type Point = {x: number, y: number}
local origin: Point = {x = 0, y = 0}
print(origin.x)A palavra-chave type cria um type alias — um nome reutilizável para a shape. Ele existe apenas para o verificador: nenhum valor em tempo de execução named Point é criado. Fields podem instance-wise each ter um type diferente:
type Player = {name: string, score: number, active: boolean}
local player: Player = {name = "Rio", score = 1500, active = true}
print(`{player.name} has {player.score} points`)Com a shape declarada, o verificador sabe que player.score é um number e identifica erros cedo: um erro de digitação como player.scroe (nenhum field existente), ou atribuir player.score = "high" (type errado). Este é apenas o começo — um capítulo posterior se aprofundará muito mais em shapes, fields opcionais e métodos.
Desafio
FácilDefina um alias de tipo Player para uma shape com três campos: name: string, score: number e active: boolean.
Crie local player: Player com o name "Rio", score 1500 e active definido como true.
Imprima, cada um em sua própria linha:
- o nome do jogador
- a pontuação do jogador
- a flag active do jogador
- a linha exata
Rio has 1500 pointsconstruída com interpolação de string a partir dos campos
Experimente você mesmo
-- Escreva o código aqui
-- 1) type Player = {name: string, score: number, active: boolean}
-- 2) crie player: Player = {name = "Rio", score = 1500, active = true}
-- 3) print name, score, active, depois a linha de resumo 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 Tipos3Tabelas 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 Maps