Menu
Coddy logo textTech

¿Qué es una Metatabla?

Parte de la sección Logic & Flow del Journey de Lua de Coddy — lección 16 de 54.

Una metatabla es simplemente una tabla de Lua normal, pero tiene un propósito especial. Cuando adjuntas una metatabla a otra tabla (llamémosla la tabla "principal"), puedes cambiar cómo se comporta esa tabla principal cuando se realizan ciertas operaciones sobre ella.

Piénsalo de esta manera: normalmente, si intentas sumar dos tablas usando el operador +, Lua no sabe qué hacer y te dará un error. Pero con una metatabla, puedes definir qué significa la suma para tus tablas. Podrías hacer que sume los valores correspondientes, concatene sus contenidos o haga cualquier otra cosa que tenga sentido para tu programa.

Las metatablas funcionan definiendo funciones especiales llamadas metamétodos. Estos metamétodos tienen nombres específicos que comienzan con dos guiones bajos, como __add para la suma o __index para buscar claves faltantes. Cuando Lua encuentra una operación en una tabla que tiene una metatabla, comprueba si la metatabla tiene el metamétodo correspondiente y lo utiliza para determinar qué debe suceder.

Este concepto abre posibilidades como crear tipos de datos personalizados con sus propios comportamientos, implementar patrones orientados a objetos, proteger tablas de modificaciones no deseadas y mucho más. En las próximas lecciones, aprenderás cómo adjuntar metatablas a las tablas y usar metamétodos para personalizar su comportamiento.

Hoja de referencia

Una metatable es una tabla de Lua normal que se puede adjuntar a otra tabla para cambiar su comportamiento en ciertas operaciones.

Las metatables utilizan funciones especiales llamadas metamétodos con nombres que comienzan con dos guiones bajos:

  • __add - define el comportamiento de la suma
  • __index - define el comportamiento para buscar claves inexistentes

Cuando se realiza una operación en una tabla con una metatable, Lua busca el metamétodo correspondiente y lo utiliza para determinar el comportamiento.

Las metatables permiten:

  • Crear tipos de datos personalizados con comportamientos específicos
  • Implementar patrones orientados a objetos
  • Proteger las tablas de modificaciones no deseadas

Pruébalo tú mismo

Esta lección no incluye un desafío de código.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow