Pour les types qui ne sont pas des tableaux ou userdata complète, chaque type a une métatable. C'est-à-dire, plutôt que chaque chaîne individuelle ayant sa propre métatable, toutes les chaînes partagent la même métabalite.
La bibliothèque de chaînes standard Lua affecte par défaut cette table de correspondance à la table string
. Donc, si vous le souhaitez, vous pouvez ajouter des entrées à string
.
Accordé, len
n'a aucun sens, car nous avons #
pour le calculer. Et vous devrez utiliser la syntaxe d'appel :
si vous voulez passer la chaîne en tant que premier paramètre.
Vous pouvez définir 'call' pouvant être mis en correspondance, mais vous devez stocker la chaîne dans un objet conteneur. Mais pas avec la chaîne elle-même, si j'ai raison. utiliser '# 'est probablement plus facile. – Jakuje
Je ne vois aucun lien entre le titre de la question et le contenu de la question. –
Votre question n'est pas claire - le titre et le corps sont incohérents après votre modification. Les méthodes auto-référentielles sont appelées avec la notation deux-points ('s: len()') - sauf si vous voulez écrire 's.len (s)'. Avez-vous lu [Programmation dans Lua: OOP] (http://www.lua.org/pil/16.html)? – Oka