Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 这些是什么样的元方法,它们存在的原因以及它们是如何创建的_Lua_Metatable_Meta Method - Fatal编程技术网

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

Lua 这些是什么样的元方法,它们存在的原因以及它们是如何创建的,lua,metatable,meta-method,Lua,Metatable,Meta Method,大家好 我一直在学习元方法,我意识到一些奇怪的事情 我已经知道Lua文档中的所有元方法,如\uuuu add,\uu index,\uu newindex,等等。。。但我在论坛和问题中看到人们使用元方法,如\uuuu ev,\uu close,\uu group,我从未在其他任何地方见过这些元方法被使用或存在于任何文档中 我的问题是,这些元方法存在吗?如果没有,它们是如何产生的?为什么人们会创建这种元方法? 无论如何,感谢大家的关注这些都是定制的元方法,在特定的项目或框架中有特殊的用途 元方法用

大家好

我一直在学习元方法,我意识到一些奇怪的事情

我已经知道Lua文档中的所有元方法,如
\uuuu add
\uu index
\uu newindex
,等等。。。但我在论坛和问题中看到人们使用元方法,如
\uuuu ev
\uu close
\uu group
,我从未在其他任何地方见过这些元方法被使用或存在于任何文档中

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


无论如何,感谢大家的关注

这些都是定制的元方法,在特定的项目或框架中有特殊的用途

元方法用于扩展
用户数据
的功能。这些是实现OOP行为最有用的方法

一些程序员添加自定义元表和元方法以实现内部目的和更好的可读性,例如
\uuuu super
\uuu extend
\uu inherit
。在大多数情况下,这些元数据是从标准元方法使用的,如
\uuu index
\uu call
。。。或者从常规方法到清理对象、错误处理等等

例如,
\uuuu close
可以与连接或文件对象一起使用,以可预测的方式管理它们,
\uu gc
不能用于此目的


\uuu组的用法示例:

扩展是您可以做的神奇的事情,不要忘记保护扩展的元方法
\uu元表。例如,看一个字符串
\u版本
,它的索引方法是用
字符串
函数填充的表。因此,对于每一个字符串,您都可以实现神奇的效果:
print(\u VERSION:rep(50))
问题是:为什么不使用数据类型表和整数无元方法?