我正在使用 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
函数的行上显示消息“bad argument: table expected, got userdata”。
for i,bar in ipairs(fooInstance.bars) do
... do stuff with each bar ...
end
当 Foo 对象被强制转换为 Lua 时,Bar 数组似乎没有变成表格,而是变成了一种userdata
类型。因此,它不能传递给ipairs
函数。
有什么办法可以让Bar
数组在 Lua 中被视为表?或者,除此之外还有什么ipairs
更适合循环遍历数组的选项吗?