Anotações de Formato Inline
Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 37 de 73.
Em Lua você vem usando tabelas como registros há muito tempo: local user = {name = "Ana", age = 20}. Nada impede que você erre o nome de um campo, esqueça um ou armazene uma string onde deveria ser um número — você só descobre quando o código é executado.
O Luau permite descrever o formato (shape) de tal tabela logo na declaração, listando cada campo e seu tipo entre chaves:
local user: {name: string, age: number} = {
name = "Ana",
age = 20,
}Compare isso com os tipos de tabela que você já conhece: {number} descreve um array e {[string]: number} descreve um mapa com quaisquer chaves do tipo string. Um shape é mais preciso — ele nomeia cada campo individualmente e dá a cada campo seu próprio tipo.
Assim que o formato é declarado, o verificador de tipos (type checker) valida a tabela em relação a ele enquanto você edita. Um campo ausente ou um tipo de valor incorreto é sinalizado antes mesmo do código ser executado:
local user: {name: string, age: number} = {
name = "Ana",
age = "twenty", -- ✗ erro de tipo: string não é um number
}Como sempre, a anotação (annotation) não adiciona nenhum comportamento em tempo de execução — a tabela é uma tabela Lua comum. Formatos inline são perfeitos para estruturas pontuais que você não planeja reutilizar; na próxima lição você dará um nome aos formatos (shapes).
Desafio
FácilCrie uma variável chamada student com uma annotation de shape inline declarando:
namedo tipostringstudentIddo tiponumberisEnrolleddo tipoboolean
Inicialize-a com o name "Sarah Johnson", studentId 12345 e isEnrolled true.
Crie uma segunda variável chamada course com uma annotation de shape inline declarando:
titledo tipostringcreditsdo tiponumberinstructordo tipostring
Inicialize-a com o title "Introduction to Luau", credits 3 e instructor "Dr. Smith".
Print, cada um em sua própria linha:
- o nome do estudante (student's name)
- o ID do estudante (student's ID)
- o título do curso (course title)
- o número de créditos (number of credits)
Experimente você mesmo
-- Escreva o código aqui
-- 1) declare student com uma anotação de shape inline
-- 2) declare course com uma anotação de shape inline
-- 3) imprima os quatro campos solicitados
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 Maps6Tipando Formatos de Tabelas
Anotações de Formato InlineAliases de Tipo para FormatosPropriedades OpcionaisFormatos vs. Tabelas FlexíveisEstendendo FormatosAdicionando Métodos a FormatosSelf e Métodos com Dois PontosRecapitulação: Definindo Formatos de TabelasPratique por conta própria: Compilador de Lua online