lua - 这些是什么类型的元方法,它们为什么存在以及它们是如何创建的
问题描述
大家好!
我一直在研究元方法,我意识到一些奇怪的事情!
我已经知道 Lua 文档中以__add
、__index
、__newindex
等形式呈现的所有元方法……但我在论坛和问题中看到人们使用像__ev
、__close
、之类的元方法__group
,而且我从未在其他任何地方看到使用或存在这些元方法在任何文档中。
我的问题是,这些元方法存在吗?如果没有,它们是如何创建的?为什么人们创建这个元方法?
无论如何,感谢您的关注
解决方案
这些是自定义元方法,在特定项目或框架中具有特殊用途。
元方法用于扩展table
or的功能userdata
。这些对于实现 OOP 行为最有用。
一些程序员出于内部目的和更好的可读性添加自定义元表和元方法,例如__super
, __extend
, __inherit
. 在大多数情况下,此类元数据用于标准元方法,如__index
, __call
, ... 或用于清理对象、错误处理等的常规方法。
例如__close
,可以与连接或文件对象一起使用,以可预测的方式管理它们,__gc
不能为此目的而信任。
使用示例__group
:Lua 元表和元方法 - 如何调用不同的成员函数
推荐阅读
- javascript - 如何从函数中将数组作为字符串返回?
- scala - Scaladoc 继承通知
- html - 如何在使用 justify-items: center 的网格中使项目彼此左对齐
- wordpress - 外部产品特征图像到新标签中的外部链接-wordpress woocommerce
- css - 防止 SVG 笔划填充文本
- .net - Vb.net 如何将十进制 value1.9 转换为 1.09 而不是 1.90
- javascript - 使用 xampp 服务器从 Javascript 向端口 3000 上的 nodejs 发送 ajax 请求
- javascript - 有没有办法在javascript中做到这一点?还是可以导入/导出
- excel - 根据 ID 将日期列拆分为开始和结束列
- html - 带有边框半径和框阴影的 CSS 剪辑路径