Menu
Coddy logo textTech

¿Qué es una Metatabla?

Parte de la sección Lógica y flujo de control del Journey de Lua de Coddy. Lección 16 de 54.

Una metatabla es simplemente una tabla 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 determinadas operaciones en ella.

Piensa en ello 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 su contenido 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 que faltan. 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 las tablas de modificaciones no deseadas y mucho más. En las próximas lecciones, aprenderás a asociar metatablas a tablas y a usar metamétodos para personalizar su comportamiento.

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 Lógica y flujo de control

Practica por tu cuenta: Compilador de Lua online