Qu’est-ce qu’une métatable ?
Fait partie de la section Logique et flux du Journey Lua de Coddy. Leçon 16 sur 54.
Une métatable est simplement une table Lua ordinaire, mais elle a un objectif particulier. 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 elle.
Voyez les choses ainsi : normalement, si vous essayez d’additionner deux tables à l’aide de l’opérateur +, Lua ne sait pas quoi faire et renvoie une erreur. Mais avec une métatable, vous pouvez définir ce que signifie l’addition pour vos tables. Vous pouvez lui faire additionner les valeurs correspondantes, concaténer leur contenu ou effectuer toute autre opération pertinente 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 traits de soulignement, comme __add pour l’addition ou __index pour rechercher des 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 possède la métaméthode correspondante et l’utilise pour déterminer ce qui doit se produire.
Ce concept ouvre des possibilités telles que la création de types de données personnalisés avec leurs propres comportements, la mise en œuvre de modèles orientés objet, la protection des tables contre les modifications indésirables, et bien plus encore. Dans les prochaines leçons, tu apprendras à associer des métatables aux tables et à utiliser des métaméthodes pour personnaliser leur comportement.
Essayez vous-même
Cette leçon ne comprend pas de défi de code.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux
1Itération avancée des tables
Itérer avec pairs()Itérer avec ipairs()pairs() contre ipairs()Récapitulatif - Fiche de personnage4Introduction aux métatables
Qu’est-ce qu’une métatable ?setmetatable et getmetatableLa metaméthode __indexLa metaméthode __newindexLa metaméthode __tostringMétaméthodes arithmétiques - Partie 1Métaméthodes arithmétiques - Partie 2Récapitulatif - Table en lecture seule2Fonctions supplémentaires de la bibliothèque table
table.concat()construction de tables et unpack()table.sort()Tri personnalisé avec des fonctionsRécapitulatif - Tableau des meilleurs scores3Concepts avancés des fonctions
Retourner plusieurs valeursFonctions variadiques (...)Les fonctions comme valeurs de première classeFonctions anonymesQu’est-ce qu’une fermeture ?Récapitulatif - Gestionnaire d’événements simpleEntraînez-vous par vous-même : Compilateur Lua en ligne