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

what kind of metamethods are these, why they exist and how they are created

大家好!

我一直在研究元方法,我发现了一些奇怪的东西!

我已经知道 Lua 文档中显示的所有元方法,如 __add__index__newindex 等...但我在论坛和在这里的问题中,人们使用 __ev__close__group 等元方法,我从未在其他任何地方看到这些元方法被使用或存在于任何文档中。

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

总之,谢谢关注

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

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

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

例如,__close 可以与连接或文件对象一起使用,以可预测的方式管理它们,__gc 不能用于此目的。

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