A Lua programozási nyelv

Adatbáziskezelés

Luában minden értéknek lehet egy ún. metatáblája. Ez egy közönséges tábla adatszerkezet, amely az adott érték viselkedésére lehet kihatással. Például amikor egy nem numerikus érték az összeadás operátor egyik komponense, akkor az ahhoz az értékhez tartozó metatábla __add() függvénye hívódik meg, ha van ilyen. Egy metatábla kulcsai az adott esemény után kapják a nevüket. Az előző példában az esemény: add, a hozzá tartozó metafüggvény pedig az __add().

Egy értékhez tartozó metatáblát a getmetatable függvénnyel kérhetjük le. A táblák metatábláit pedig a setmetatable segítségével adhatjuk meg. A többi típus metatáblája nem változtatható meg, csak a C API-n keresztül.

A table és userdata típusú elemeknek külön-külön megadható egy-egy metatábla, azonban a többi típus elemei egy metatáblán osztoznak. Egy értéknek alapértelmezetten nincs metatáblája, csak a string könyvtár rendel metatáblát a string típushoz.

A metatáblák határozzák meg, hogy egy érték hogy viselkedik aritmetikai műveletek, összehasonlító relációs operátorok, konkatenáció, hossz operátor és indexelés esetén, valamint a tábláknál és userdata értékeknél a szemétgyűjtést is szabályozhatjuk a metatáblák segítségével.
Az alábbi metafüggvények használhatók úgy, hogy a metatábla kulcsait két aláhúzásjellel prefixeljük (__add()).