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 metatable é simplesmente uma tabela Lua comum, mas ela tem um propósito especial. Quando você anexa uma metatable a outra tabela (vamos chamá-la de tabela "principal"), você pode alterar como essa tabela principal se comporta quando certas operações são realizadas nela.

Pense da seguinte forma: normalmente, se você tentar somar duas tabelas usando o operador +, o Lua não saberá o que fazer e retornará um erro. Mas com uma metatable, você pode definir o que a adição significa para suas tabelas. Você poderia fazer com que ela somasse valores correspondentes, concatenasse seus conteúdos ou fizesse qualquer outra coisa que faça sentido para o seu programa.

As metatables 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 metatable, ele verifica se a metatable possui o metamétodo correspondente e o utiliza para determinar o que deve acontecer.

Este conceito abre possibilidades como a criação de tipos de dados personalizados com seus próprios comportamentos, a implementação de padrões orientados a objetos, a proteção de tabelas contra modificações indesejadas e muito mais. Nas próximas lições, você aprenderá como anexar 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