Menu
Coddy logo textTech

O que é uma Metatabela?

Parte da seção Logic & Flow 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.

Folha de consulta

Uma metatable é uma tabela Lua comum que pode ser anexada a outra tabela para alterar seu comportamento em certas operações.

Metatables usam funções especiais chamadas metamethods com nomes que começam com dois sublinhados:

  • __add - define o comportamento de adição
  • __index - define o comportamento para a busca de chaves ausentes

Quando uma operação é realizada em uma tabela com uma metatable, o Lua verifica o metamethod correspondente e o utiliza para determinar o comportamento.

Metatables permitem:

  • Criar tipos de dados personalizados com comportamentos específicos
  • Implementar padrões orientados a objetos
  • Proteger tabelas contra modificações indesejadas

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 Logic & Flow