问题标签 [metatable]

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 投票
0 回答
326 浏览

lua - 打印所有元表内容

我有表:

我有肮脏但有效的代码:

它的电报机器人。当按名称、日期和时间询问农场时 - 没关系。

我的麻烦就在 else 语句附近。我想向机器人询问农场和日期。它应该返回类似“在 16-6-2014,在农场“knk”将是 2 个农场。在 17 - 2 个代理。在 18 - 3 个代理”之类的列表

简单的 table.concat 对我不起作用。

0 投票
2 回答
363 浏览

c - C 中的嵌套 Lua 元表

在 3D 场景中,我有一个想要使用 Lua 移动的位置的对象。

例如。box.position.x = 10

box 有一个元表(“Object”),因此有一个位置(“Vec”)。对象具有__newindex__index设置为分别调用 C 函数NewIndexObjectIndexObject。与 Vec (NewIndexVecIndexVec) 相同。

对象有一个 id,因此可以在存储在场景中的列表中识别它,当box.position访问时一切正常,调用 C 函数 IndexObject,我可以从堆栈中提取 id,它只是在box.position.x = 10执行“NewIndexVec”时被调用并且堆栈上唯一的东西是 {table, x, 10} 所以没有办法识别对象来改变它的 x 位置。

有没有将价值观推到当地国家?帮助!

更新:感谢您快速回复我,下面我已经尽可能地提炼了代码。如果您运行此代码,它似乎可以工作,但我有评论我被卡住了,它只是获取数组中的第一个对象,但我需要通过它的 ID 选择它,提前致谢

0 投票
1 回答
117 浏览

lua - 元表问题

所以我知道,如果表的元表不包含我引用的变量,lua 会查找它,但是当我尝试设置表中尚不存在的变量时,它将它设置在元表中,这似乎是错误的.

这是我的意思的一个例子

在此代码中,它将替换 metatables 变量,而不是将其设置在我引用的表中。

但是,此代码不会发生这种情况

使用元表和嵌套表时是否需要做更多工作?或者有没有办法解决这个问题?

0 投票
0 回答
877 浏览

lua - Lua 自定义运算符

我正在尝试创建一个运算符'!返回打印功能。我收到以下错误:

我的代码如下:

看来这应该可行,因为http://lua-users.org/wiki/CustomOperators上的技术 #3使用几乎完全相同的方法。

0 投票
1 回答
450 浏览

c - LuaJit - 从模块/包中获取元表并将其分配给用户数据

假设我有一个自定义结构的元表,vector2_t它位于模块mymod 中,如下所示:

在另一个脚本中,我有这个回调/事件侦听器函数,它必须接收 avector2_t作为它的参数:

现在,我必须从 C/C++ 调用该回调/事件侦听器函数并将其实例vector2_t(连同它的关联元表)作为参数传递给该函数。

我有点迷茫,我不知道如何将它的实例vector2_t作为函数参数传递。很抱歉发布了这么多代码,但我想确保我解释正确。

0 投票
1 回答
1038 浏览

lua - Lua表长度函数覆盖不起作用

如何更改#Lua 中表的长度运算符 (),手册建议在元表中分配__len函数,然后将该元表分配给我要覆盖的表,但这不能按预期工作?我没有选择在 C 端覆盖它。

0 投票
1 回答
5481 浏览

lua - 什么是 newproxy,它有什么用处?

昨天我在玩 Lua,偶然发现了“newproxy”功能。

http://wiki.roblox.com/index.php?title=Function_dump/Basic_functions#newproxy

我有点理解它,但我不确定它有什么用处。我知道它会创建一个附加了元表的空白 userdata 对象(如果参数为真)。

newproxy 怎么有用?这是我在弄乱它时所做的一个示例:

0 投票
1 回答
118 浏览

lua - lua metatable help(在游戏中生成怪物)

我在使用元表为游戏创建新怪物时遇到问题,我可以创建一个精确的副本,但我无法生成新的老鼠或蜥蜴,例如使用新的 id。

这会在变量 testrat 下创建一个新老鼠,控制台会打印“a rat”和“1”。我不知道如何在创建老鼠时为其指定新的 ID 号。任何帮助将不胜感激,元表让我疯狂!

0 投票
1 回答
145 浏览

lua - 为什么这会导致 C 堆栈溢出?

我知道我可以通过使用来解决这个问题rawset,但我只是想知道为什么下面的代码会导致 C 堆栈溢出。

0 投票
1 回答
123 浏览

lua - 如何解决此解包问题?

我正在创建一个 Array 类,为表添加更多使用。我有一个元方法,可以让我组合两个表,例如:

Array(5) .. Array(6, 10) 应该给你 {5, 6, 10}

我知道我可以使用两个循环来做到这一点,但我正在努力使我的代码尽可能干净和高效。我遇到了解包问题。我正在尝试连接两个表,但它不包括所有值。这是我的代码和输出:

OUTPUT: 5, 6, 9 (I want it to be "5, 12, 13, 6, 9")