我一直在尝试找到一种从LuaJ中的Java方法返回多个值的方法。也就是说,从Lua代码中返回要从Java中检索的多个值。
再一次......我的意思是:
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()
成功检索宽度和高度。
致以最诚挚的问候,
答案 0 :(得分:1)
我设法找到了如何做到这一点。在做了一些更多的研究后,结果发现有一个VarArgFunction可以扩展你的类。而不是像通常在“call()”方法中那样返回LuaValue,而是使用“invoke(Varargs v)”方法。这允许您返回包含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()
耶!