问题标签 [meta-method]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
lua - next() 是否寻找 __pairs 元方法?
一般来说,语法:
相当于:
但是如果t
有__pairs
元方法呢?标准next()
功能会对此进行检查吗?如果不是,那么在迭代表时总是使用而不是直接 调用不是更好吗?pairs
next()
lua - 我们如何改变 print 显示表格的方式
假设我有一段代码如下
我必须做什么才能让 Lua 打印出aTable current aValue = 1
类似于table: 0x01ab1d2
.
到目前为止,我已经尝试设置元__tostring
方法,但似乎并没有被print
. 是否有一些我遗漏的元方法或者答案与元方法无关?
c++ - Lua C++ 用户数据矩阵访问元素
我在 C++ 中有一个矩阵类,构造函数如下:
我已经实现了 set 和 get 方法,如下所示:
矩阵类可以从 Lua 访问;但是,我可以从 Lua 访问矩阵元素的唯一方法是,如果 m 是矩阵,m:GetValue 或 m:SetValue。
我想知道是否可以通过符号 m[1,2] 或 m(1,2) 访问(设置)矩阵元素,其中 m 是矩阵,[1,2] 是第一行的元素,并且第二列。
lua - 在标签中附加元表
我有解析配置文件并生成表的解析器。
结果表可能类似于:
目标是有一个表,我可以从中读取设置,如果设置不存在,它会尝试从它的父级获取它。在顶层,它将从全局中获取。如果它不在全局范围内,它将返回 nil。
我像这样将元表附加到根目录:
但是,在请求密钥时它不起作用。情况似乎总是为零。如何从父表中读取?
lua - 元方法和类
我创建了一个与此处所示类似的函数,但在使用 __add 元方法时遇到了问题。我希望能够在类的两个实例上使用 __add 元方法,但它似乎工作的唯一方法是将元方法添加到实例的元表中。有没有办法可以将其设置为工作,以便我的类或其元表可以具有 __add 元方法并在将实例添加在一起时工作?
这是我想做的一个例子:
lua - 访问可变密钥时的元方法
__index
作为不可变访问时调用:
__newindex
当作为不存在的可变索引访问时调用:
是否有一个元方法可以在访问密钥时作为可变的时间调用,即不仅在密钥不存在的情况下?
我想创建一种行为,以便当用户在表中设置键时,它会调用本机方法,而不管键是否已经存在。
oop - Lua继承不包括元方法吗?
我正在尝试在 Lua 中实现简单的继承,因为它在PIL 16.2中提出。但是,我遇到了一个令人惊讶的行为:元方法似乎没有被继承。在下面的示例中,我创建了一个带有x
和y
成员的 Point 类,并给它一个__add
元方法。添加 Point 的实例时,一切正常,但如果我创建一个子类并添加它的实例,则会出现错误。
我期待 Lua 会寻找__add
in ChildPoint
,这会触发ChildPoint
's __index
, find __add
in Point
。但这似乎并没有发生。
为什么这不起作用,实际发生了什么,以及(如果这是正确的行为,而不仅仅是我的错误)我如何在 Lua 中实现可继承的元方法?
lua - 是否可以像 rawget/set 在 Lua 中绕过 __index/__newindex 一样绕过 __tostring?
例如:
这样的事情可能吗?我知道 rawtostring 方法不存在,但是有没有办法模拟这种行为,或者完全绕过它?
lua - 如何在 Lua 中创建一个简单的可导入类?
我想MyClass
在 Lua 中创建一个单独的文件myclass.lua中的类,我可以稍后导入和使用。它应该按以下方式工作:
但是,按照 Lua 文档中的代码,我无法使其工作并且遇到错误attempt to call global 'MyClass' (a table value)
。
到目前为止我为myclass.lua编写的代码:
有很多示例如何在 Lua 中编写类,但我认为我不了解其中的区别,因此迷失在实现细节中。有或多或少的传统方法吗?
lua - 为什么可以设置 __index 等于一个表
索引元方法可以设置为等于表。据我所知
和
是相同的。为什么在这种情况下允许以这种方式声明函数?