LuaJ遍历强制Java对象中的对象数组

问题描述 投票:0回答:1

我正在使用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类,其中包含一个...

java lua luaj
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.