首页 > 解决方案 > 这些是什么类型的元方法,它们为什么存在以及它们是如何创建的

问题描述

大家好!

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

我已经知道 Lua 文档中以__add__index__newindex等形式呈现的所有元方法……但我在论坛和问题中看到人们使用像__ev__close、之类的元方法__group,而且我从未在其他任何地方看到使用或存在这些元方法在任何文档中。

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

无论如何,感谢您的关注

标签: luametatablemeta-method

解决方案


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

元方法用于扩展tableor的功能userdata。这些对于实现 OOP 行为最有用。

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

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

使用示例__groupLua 元表和元方法 - 如何调用不同的成员函数


推荐阅读