问题标签 [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 投票
2 回答
1037 浏览

types - 你能比较 Lua 中表或元表的“类型”吗?

我在指环王在线 (LOTRO) Beta Lua 脚本功能中调用 API 函数。API 方法返回一个名为 ClassAttributes 的“类型”,它将属于给定的类属性“类型”。我说“类型”是因为当我调用type()返回值时,它说它是一个表。

有没有办法让我检查类型或元表类型?例如:

更新 以下代码是我使用的:

这是输出:

player:GetClass():24
Turbine.Gameplay.Class.Captain:24
你在扮演队长

0 投票
1 回答
230 浏览

lua - 如何使用元表将每个索引更改为表?

我正在尝试编写一个元表,以便表中的所有索引都向上移动一个位置(即t[i]应该返回t[i+1])。我需要这样做,因为该表是使用索引 1 作为第一个元素定义的,但我必须与一个使用索引 0 作为第一个元素的程序交互。自从阅读了 Lua 编程以来,我认为我可以使用代理表完成我想要的工作,但我似乎无法让它工作。到目前为止,我有这个:

但是,这不会产生预期的结果。事实上,它根本不返回任何值(每个查找都是nil)。有没有更好的方法来做到这一点,或者我只是错过了什么?

0 投票
1 回答
677 浏览

c# - 从 MetaTable 添加/删除 MetaColumn

我想从 MetaTable 中添加/删除一列。但table.Column属于类型ReadOnlycollection<MetaColumn>
如何修改、添加或删除表格中的列?
谢谢你。

0 投票
1 回答
87 浏览

mysql - MySQL 依赖表注释

我正在构建一个在 MySQL 数据库中添加/删除/更改表的应用程序。一些表具有特定的应用程序角色,需要由应用程序标记和标识。我可以依靠表格注释来可靠地存储此元信息吗?

0 投票
2 回答
3979 浏览

oop - Lua 元表类析构函数

我有以下 Lua 元表类,我怎样才能向它添加一个析构函数,以便当某个条件到达时它会破坏创建的对象并将其值设置为 nil?

0 投票
1 回答
1622 浏览

lua - Lua 可以支持不区分大小写的方法调用吗?

我使用 Lua 作为我的 C++ 应用程序的数据描述语言。我有一堆使用 SLB 2.0 绑定到 Lua 的 C++ 类。我绑定了诸如“SetPos”或“SetName”之类的方法。我使用以“pos”或“name”作为键值的表​​来指定位置或名称(例如)。我希望能够获取密钥,添加“set”,然后调用该方法(如果存在)(可能不存在)。那可能吗?如果是这样,有什么建议吗?

我知道我可以让我的绑定方法小写,但我宁愿让它们与它们绑定的方法相同(尽管这可能是我的后备)。我可以尝试根据我的命名标准构建方法名称,但不区分大小写不太容易出错。

我觉得应该有一个棘手的 Lua 可以使用元表解决这个问题,但我自己无法解决这个问题。

有什么建议么?

谢谢!

0 投票
1 回答
502 浏览

lua - 忽略 Lua 中的元表?

我正在开发一个 Lua 菜单,我得到了 Menu 类,它创建了这样的实例:

这显然不是菜单的所有代码,但这足以解释我的问题。菜单工作得很好,但是,打印它不是。问题是,我使用递归方法打印出所有子菜单,但它会一遍又一遍地打印第一个菜单。我知道是什么原因造成的,但不知道如何解决。这是代码:

问题是(我想是的,如果我错了,请纠正我?),在第 10 行if self.subMenus ...它总是正确的。总是有一个子菜单,即使没有,因为菜单(自我)没有找到子菜单,它检查它的元表,它有子菜单,然后在第 11 行,它为它的元表子菜单执行 for 循环. 这意味着,它会再次绘制自己。然后再次。然后再次。那么有没有办法在一个地方绕过元表?或者我什至是对的,是重复打印造成的吗?

0 投票
3 回答
316 浏览

lua - Lua 是否允许带有奇怪数量的参数的元方法?

例如,我可以声明一个带有__index两个参数的元方法,然后执行类似的操作myuserdata[somearg1, somearg2]吗?并不是说我想使用它,或者我知道它为什么有用,我只是想知道在我处理将 c++ 绑定到 Lua 的库中我是否可以并且应该强制执行一项权利(__call当然元方法除外)绑定为元方法的函数的参数数量。

0 投票
1 回答
1001 浏览

variables - Lua 元表变量声明

我不知道如何命名这个问题,因为我对正在发生的事情了解得不够多。(随意编辑)

考虑下面的代码。

后面的变量(ox 和 self.y)有什么区别?

如果我print_r the variable table,则只返回 x 。但是,两者table.xtable.y可以访问。这让我意识到两者之间是有区别的。

有人可以解释有什么区别以及将变量放在不同位置的原因是什么?

0 投票
2 回答
8092 浏览

object - Corona SDK 如何删除一个对象?

好吧,我在从游戏中删除对象时遇到了一些麻烦,问题是我有一个玩家类(由元表组成),在里面我有一个名为 sprite 的变量,它保存我将在屏幕上绘制的图像精灵的地址,所以当我创建对象时,我不会立即绘制精灵,因为我做了一个函数绘制(这只是为了解释我所拥有的)。在game.lua中,我通过调用该函数来绘制玩家,然后我想删除我的玩家实例(这样屏幕上的图像也会消失)......就是这样,我尝试了player:removeSelf(),显示。 remove(player),其中一个向我抛出了一个错误(尝试调用字段'removeSelf'(一个 nil 值)),另一个运行正常,但它并没有改变玩家仍然在那里的事实(我可以访问它的功能和精灵仍然显示在屏幕上.. . 好吧,这是我的代码: