Menu
Coddy logo textTech

O que é uma Metatabela?

Parte da seção Lógica e Fluxo do Journey de Lua da Coddy. Lição 16 de 54.

Uma metatabela é simplesmente uma tabela Lua comum, mas tem uma finalidade especial. Quando você associa uma metatabela a outra tabela (vamos chamá-la de tabela "principal"), pode alterar o comportamento dessa tabela principal quando determinadas operações são realizadas nela.

Pense desta forma: normalmente, se você tentar somar duas tabelas usando o operador +, Lua não saberá o que fazer e exibirá um erro. Mas, com uma metatabela, você pode definir o que a adição significa para suas tabelas. Você pode fazer com que ela some os valores correspondentes, concatene seus conteúdos ou faça qualquer outra coisa que faça sentido para o seu programa.

As metatabelas funcionam definindo funções especiais chamadas metamétodos. Esses metamétodos têm nomes específicos que começam com dois sublinhados, como __add para adição ou __index para procurar chaves ausentes. Quando o Lua encontra uma operação em uma tabela que possui uma metatabela, ele verifica se a metatabela tem o metamétodo correspondente e o utiliza para determinar o que deve acontecer.

Esse conceito abre possibilidades como criar tipos de dados personalizados com seus próprios comportamentos, implementar padrões orientados a objetos, proteger tabelas contra modificações indesejadas e muito mais. Nas próximas lições, você aprenderá a associar metatabelas a tabelas e usar metamétodos para personalizar seu comportamento.

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 Lógica e Fluxo

Pratique por conta própria: Compilador de Lua online