我一直在尝试寻找一种从 LuaJ 中的 Java 方法返回多个值的方法。也就是说,从 Java 返回多个值以在 Lua 代码中检索。
再一次……我的意思是:
public LuaValue call() {
Dimension size = guiConsole.getSize();
int width = LuaValue.valueOf(size.width), height = LuaValue.valueOf(size.height);
return width, height; // This obviously wouldn't work, but this is the functionality I'm after
}
这样我就可以从 Lua 代码中做到:
width, height = getSize()
成功获取宽度和高度。
最好的问候,
最佳答案
我设法找到了如何做到这一点。在做了更多研究之后,发现有一个 VarArgFunction 可以用来扩展你的类。您可以使用“invoke(Varargs v)”方法,而不是像通常在“call()”方法中那样返回您的 LuaValue。这允许您返回包含 LuaValues 的 Varargs 对象。 Varargs 是使用“LuaValue.varargsOf(LuaValue[] luaValues)”方法构建的。
例子:
public class GetSize extends VarArgFunction {
private Dimension size;
public GetSize(Dimension size) {
this.size= size;
}
public Varargs invoke(Varargs v) {
Varargs varargs = LuaValue.varargsOf(new LuaValue[] {LuaValue.valueOf(size.width),
LuaValue.valueOf(size.height)});
return varargs;
}
}
也就是说,现在可以从 Lua 中的“getSize()”函数中检索两个值!
width, height = getSize()
耶!
关于java - LuaJ 中的多个返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32573748/