LuaJ Iterate over Object Array in Coerced Java Object



我正在使用LuaJ 3.0.1,并且在迭代Lua脚本中强制Java对象中包含的数组时遇到问题。目前,这是我正在做的事情:

我有一个包含对象数组的 Java 类。类似的东西

public class Foo {
public Bar[] bars;
}

我有一个LuaFunction,它将Foo作为其参数之一。我调用这个函数,按如下方式传递 Foo 的实例:

luaFunction.invoke(new LuaValue[]{
CoerceJavaToLua.coerce(fooInstance)
});

但是,问题出现在 Lua 脚本本身,我需要迭代 Bar 数组。我尝试使用以下代码,但这会产生一个 org.luaj.vm2.LuaError,其中包含包含ipairs函数的行上的消息"错误的参数:预期的表,获取的用户数据"。

for i,bar in ipairs(fooInstance.bars) do
... do stuff with each bar ...
end

当 Foo 对象被强制转换为 Lua 时,Bar 数组似乎不会变成一个表,而是变成一个userdata类型。因此,它不能传递给ipairs函数。

有什么方法可以使Bar数组在Lua中被视为表吗?或者,除了ipairs之外,是否有任何选项更适合循环遍历数组?

根据 Egor 对我原始问题的评论,解决方案是使用以下代码:

local i = 0
while fooInstance.bars[i+1] do
i = i + 1
local bar = fooInstance.bars[i]
... do stuff with bar ...
end

相关内容

  • 没有找到相关文章

最新更新