metamethods用luaL_ref键遮蔽问题

时间:2012-01-01 15:51:04

标签: lua

我有一个空表,其__newindex和__index元方法是从C端实现的。该表将用作数组(t [1] = 3,print(t [2])...),C捕获所有访问。

现在,我想使用luaL_ref将另一个对象的引用添加到此表中,只是为了防止第二个被gc抛弃。但我认为返回的引用可能会影响我将在此表中使用的“虚拟”索引:

例如,我希望t [1] = 3来调用__newindex,但如果lauL_ref返回1,那么我的表实际上会有一个元素为'1',那么__newindex将不再被调用。

我知道luaL_ref保证返回表中尚未使用的键,但由于表是空的(所以我的metamethods总是被调用),我认为它实际上可以返回低值,我很可能使用。

这种推理有缺陷吗?如果没有,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我建议不要使用luaL_ref。至少,不要在空桌上放置你的元素。也许你应该在metatable本身或者你在注册表中存储的其他内部表中引用它。

相关问题