我正在使用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数组上进行迭代。我尝试使用以下代码,但这会在包含ipairs
函数的行上生成一个org.luaj.vm2.LuaError消息,消息为“错误的参数:期望表,得到了用户数据”。
for i,bar in ipairs(fooInstance.bars) do ... do stuff with each bar ... end
[当Foo对象强制转换为Lua时,似乎Bar数组没有变成表,而是变成了
userdata
类型。因此,它无法传递给ipairs
函数。
有什么方法可以使Bar
数组在Lua中被视为表?或者,除了ipairs
之外,是否还有其他选项更适合遍历数组?
我正在使用LuaJ 3.0.1,并且在遍历我的Lua脚本中强制Java对象中包含的数组时遇到问题。当前,这是我的工作:我有一个Java类,其中包含一个...
根据Egor对我的原始问题的评论,解决方案是使用以下代码: