Anotações de Formato Inline
Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 39 de 80.
Em Lua, você usa tabelas como registros há muito tempo: local user = {name = "Ana", age = 20}. Nada impede você de escrever um campo com erro, esquecer um campo ou armazenar uma string onde deveria haver um número. Você só descobre isso quando o código é executado.
Luau permite descrever a estrutura de uma tabela assim diretamente 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 chaves de qualquer string. Uma estrutura é mais precisa. Ela nomeia cada campo individualmente e atribui a cada campo seu próprio tipo.
Depois que a estrutura é declarada, o verificador de tipos confere a tabela em relação a ela enquanto você edita. Um campo ausente ou um valor do tipo errado é sinalizado antes mesmo de o código ser executado:
local user: {name: string, age: number} = {
name = "Ana",
age = "twenty", -- ✗ erro de tipo: string não é um número
}Como sempre, a anotação não adiciona nenhum comportamento em tempo de execução: a tabela é uma tabela Lua comum. Estruturas inline são perfeitas para estruturas únicas que você não pretende reutilizar; na próxima lição, você dará um nome às estruturas.
Desafio
FácilDescreva o registro de um estudante diretamente na declaração dele.
- Declare
local student: {name: string, studentId: number} = {name = "Sarah Johnson", studentId = 12345}. - Imprima
student.namee depoisstudent.studentId.
Pressione Executar código: a saída mostra Sarah Johnson e 12345.
Experimente você mesmo
-- 1) declare student com uma anotação de formato inline
-- 2) imprima seu nome e, em seguida, seu studentId
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
Tipagem de parâmetros e valores de retornoTipagem de funções anônimasFunções sem retornoParâmetros opcionaisValores padrão dos parâmetrosValores padrão para booleanosFunções variádicasDefinindo tipos de funçãoRecapitulação: funções tipadas2Tipos básicos
Número, string e booleanoO tipo 'any': válvula de escapeO tipo 'unknown'Tipos nulos e opcionaisInferência de tipos na práticaAnotações explícitas de tipoRevisão: prática com tipos básicos5Aliases, 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 MapsPercorrendo TabelasTabelas com Formatos MistosLendo uma GradeConstruindo uma Gradetable.unpackRevisão: 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 Luau online