LuaJ中的多个返回值

我一直在尝试找到一种方法,在 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; // 这显然不会起作用,但这是我想要的功能

}

这样我就可以在 Lua 代码中执行以下操作:

width, height = getSize()

成功检索出宽度和高度。

此致敬礼,

点赞
用户4004640
用户4004640

我找到了如何实现它的方法。经过一些研究,发现有一个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()

耶!

2015-09-15 06:47:17