Une métatable n'est ni plus, ni moins qu'une table Lua ordinaire.
Une métatable mt, va redéfinir le comportement de la valeur initiale d'une table t1, en fonction de certaines opérations spéciales.
Au moment de sa construction, une table ne possède pas de métatable.
-- Construction d'une nouvelle table... Ce n'est pas une métatable! table0 = {} -- Recherche de l'existence d'une métatable. print(getmetatable( table0 )) on obtiendra: nil car il n'y a pas de métatable..
Il appartient au programmeur de créer la métatable dont il aura besoin et de l'associer à la table de son choix.
-- Construction d'une table 't0' t0 = {} -- Construction d'une table 't1' t1 = {} -- Assignation de t1 en tant que métatable de 't0'. setmetatable( t0, t1 ) -- t1 est maintenant la métatable de 't0'.