Menu
Coddy logo textTech

Qu'est-ce qu'une Metatable ?

Fait partie de la section Logic & Flow du Journey Lua de Coddy — leçon 16 sur 54.

Une métatable est simplement une table Lua ordinaire, mais elle a un but spécial. Lorsque vous attachez une métatable à une autre table (appelons-la la table « principale »), vous pouvez modifier le comportement de cette table principale lorsque certaines opérations sont effectuées sur celle-ci.

Pensez-y de cette façon : normalement, si vous essayez d'additionner deux tables ensemble en utilisant l'opérateur +, Lua ne sait pas quoi faire et vous renverra une erreur. Mais avec une métatable, vous pouvez définir ce que l'addition signifie pour vos tables. Vous pourriez faire en sorte qu'elle additionne les valeurs correspondantes, concatène leurs contenus, ou fasse n'importe quoi d'autre qui ait du sens pour votre programme.

Les métatables fonctionnent en définissant des fonctions spéciales appelées métaméthodes. Ces métaméthodes ont des noms spécifiques qui commencent par deux tirets bas, comme __add pour l'addition ou __index pour la recherche de clés manquantes. Lorsque Lua rencontre une opération sur une table qui possède une métatable, il vérifie si la métatable contient la métaméthode correspondante et l'utilise pour déterminer ce qui doit se passer.

Ce concept ouvre des possibilités telles que la création de types de données personnalisés avec leurs propres comportements, l'implémentation de modèles orientés objet, la protection des tables contre les modifications indésirables, et bien plus encore. Dans les leçons à venir, vous apprendrez comment attacher des métatables aux tables et utiliser des métaméthodes pour personnaliser leur comportement.

Aide-mémoire

Une métatable est une table Lua ordinaire qui peut être attachée à une autre table pour modifier son comportement lors de certaines opérations.

Les métatables utilisent des fonctions spéciales appelées métaméthodes dont les noms commencent par deux underscores :

  • __add - définit le comportement de l'addition
  • __index - définit le comportement pour la recherche de clés manquantes

Lorsqu'une opération est effectuée sur une table disposant d'une métatable, Lua recherche la métaméthode correspondante et l'utilise pour déterminer le comportement.

Les métatables permettent de :

  • Créer des types de données personnalisés avec des comportements spécifiques
  • Implémenter des modèles orientés objet
  • Protéger les tables contre les modifications indésirables

Essayez vous-même

Cette leçon ne comprend pas de défi de code.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logic & Flow