Menu
Coddy logo textTech

Formatos vs. Tabelas Flexíveis

Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 40 de 73.

Agora você tem duas maneiras de trabalhar com tabelas de registros: a maneira flexível que sempre usou em Lua e os formatos declarados. Vale a pena fazer uma pausa para ver o que cada uma oferece.

Uma tabela flexível aceita qualquer coisa. Essa flexibilidade tem um preço: escreva um campo incorretamente (user.nmae) e você obtém silenciosamente nil; esqueça um campo e o bug aparece muito longe dali, em tempo de execução, no primeiro código que tocar na lacuna:

local user = {name = "Ana", age = 20}
print(user.nmae) -- tabela solta: imprime nil silenciosamente

Declare um formato e esses erros passam do tempo de execução para o momento da edição. O verificador sinaliza o erro de digitação assim que você o escreve, seu editor pode completar automaticamente os nomes dos campos, e a declaração type também serve como documentação do conteúdo da tabela:

type User = {name: string, age: number}
local user: User = {name = "Ana", age = 20}
print(user.nmae) -- ✗ erro de tipo: chave 'nmae' não encontrada em User

Se você vem do TypeScript, observe que Luau não tem a palavra-chave interface: type cuida de todos os formatos. Também não existe "mesclagem de declarações": declarar dois tipos com o mesmo nome no mesmo escopo é um erro, portanto cada formato tem exatamente uma definição.

Os formatos do Luau são estruturais: qualquer tabela com os campos corretos dos tipos corretos corresponde, não importa onde ou como ela foi criada. E as tabelas flexíveis ainda têm seu lugar: scripts rápidos e dados realmente dinâmicos não precisam de um formato declarado. Para qualquer coisa passada entre funções, porém, um formato detecta os erros enquanto eles ainda são fáceis de corrigir.

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