这些元方法是什么,为什么存在以及如何创建它们

大家好!

我一直在研究元方法,意识到了一些奇怪的事情!

我已经知道 Lua 文档中介绍的所有元方法,比如 __add__index__newindex 等等……但是我在论坛和这里看到有人使用像 __ev__close__group 这样的元方法,在任何文档中都从未见过这些元方法被使用或存在。

我的问题是,这些元方法存在吗?如果不存在,它们是如何被创建的?为什么人们要创建这些元方法?

无论如何,感谢您的关注

点赞
用户12918181
用户12918181

这些是自定义的元方法,具有特定项目或框架中的特殊目的。

元方法用于扩展 tableuserdata 的功能。这些最常用于实现 OOP 行为。

一些程序员添加自定义元表和元方法,用于内部目的和更好的可读性,例如 __super__extend__inherit。在大多数情况下,此类元数据是从标准元方法(如 __index__call ...)或常规方法中使用的,以清除对象、错误处理等。

例如,可以使用 __close 来管理连接或文件对象,以可预测的方式进行管理,__gc 无法信任这个目的。

__group 的使用示例: Lua metatables and metamethod - How to call a different member function

2020-08-24 11:14:02