gpt4 book ai didi

java - LuaJ 迭代强制 Java 对象中的对象数组

转载 作者:行者123 更新时间:2023-12-01 18:33:16 26 4
gpt4 key购买 nike

我正在使用 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

关于java - LuaJ 迭代强制 Java 对象中的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60121786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com