问题标签 [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.

0 投票
1 回答
501 浏览

lua - next() 是否寻找 __pairs 元方法?

一般来说,语法:

相当于:

但是如果t__pairs元方法呢?标准next()功能会对此进行检查吗?如果不是,那么在迭代表时总是使用而不是直接 调用不是更好吗?pairsnext()

0 投票
3 回答
66 浏览

lua - 我们如何改变 print 显示表格的方式

假设我有一段代码如下

我必须做什么才能让 Lua 打印出aTable current aValue = 1类似于table: 0x01ab1d2.

到目前为止,我已经尝试设置元__tostring方法,但似乎并没有被print. 是否有一些我遗漏的元方法或者答案与元方法无关?

0 投票
1 回答
175 浏览

c++ - Lua C++ 用户数据矩阵访问元素

我在 C++ 中有一个矩阵类,构造函数如下:

我已经实现了 set 和 get 方法,如下所示:

矩阵类可以从 Lua 访问;但是,我可以从 Lua 访问矩阵元素的唯一方法是,如果 m 是矩阵,m:GetValue 或 m:SetValue。

我想知道是否可以通过符号 m[1,2] 或 m(1,2) 访问(设置)矩阵元素,其中 m 是矩阵,[1,2] 是第一行的元素,并且第二列。

0 投票
1 回答
40 浏览

lua - 在标签中附加元表

我有解析配置文件并生成表的解析器。

结果表可能类似于:

目标是有一个表,我可以从中读取设置,如果设置不存在,它会尝试从它的父级获取它。在顶层,它将从全局中获取。如果它不在全局范围内,它将返回 nil。

我像这样将元表附加到根目录:

但是,在请求密钥时它不起作用。情况似乎总是为零。如何从父表中读取?

0 投票
2 回答
91 浏览

lua - 元方法和类

我创建了一个与此处所示类似的函数,但在使用 __add 元方法时遇到了问题。我希望能够在类的两个实例上使用 __add 元方法,但它似乎工作的唯一方法是将元方法添加到实例的元表中。有没有办法可以将其设置为工作,以便我的类或其元表可以具有 __add 元方法并在将实例添加在一起时工作?

这是我想做的一个例子:

0 投票
3 回答
166 浏览

lua - 访问可变密钥时的元方法

__index作为不可变访问时调用:

__newindex当作为不存在的可变索引访问时调用:

是否有一个元方法可以在访问密钥时作为可变的时间调用,即不仅在密钥不存在的情况下?

我想创建一种行为,以便当用户在表中设置键时,它会调用本机方法,而不管键是否已经存在。

0 投票
1 回答
97 浏览

oop - Lua继承不包括元方法吗?

我正在尝试在 Lua 中实现简单的继承,因为它在PIL 16.2中提出。但是,我遇到了一个令人惊讶的行为:元方法似乎没有被继承。在下面的示例中,我创建了一个带有xy成员的 Point 类,并给它一个__add元方法。添加 Point 的实例时,一切正常,但如果我创建一个子类并添加它的实例,则会出现错误。

我期待 Lua 会寻找__addin ChildPoint,这会触发ChildPoint's __index, find __addin Point。但这似乎并没有发生。

为什么这不起作用,实际发生了什么,以及(如果这是正确的行为,而不仅仅是我的错误)我如何在 Lua 中实现可继承的元方法?

0 投票
1 回答
259 浏览

lua - 是否可以像 rawget/set 在 Lua 中绕过 __index/__newindex 一样绕过 __tostring?

例如:

这样的事情可能吗?我知道 rawtostring 方法不存在,但是有没有办法模拟这种行为,或者完全绕过它?

0 投票
2 回答
1521 浏览

lua - 如何在 Lua 中创建一个简单的可导入类?

我想MyClass在 Lua 中创建一个单独的文件myclass.lua中的类,我可以稍后导入和使用。它应该按以下方式工作:

但是,按照 Lua 文档中的代码,我无法使其工作并且遇到错误attempt to call global 'MyClass' (a table value)

到目前为止我为myclass.lua编写的代码:

有很多示例如何在 Lua 中编写类,但我认为我不了解其中的区别,因此迷失在实现细节中。有或多或少的传统方法吗?

0 投票
1 回答
262 浏览

lua - 为什么可以设置 __index 等于一个表

索引元方法可以设置为等于表。据我所知

是相同的。为什么在这种情况下允许以这种方式声明函数?