java - LuaJ 中的多个返回值

标签 java 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; // 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/

相关文章:

java - Android & LuaJ 3.0 绑定(bind)

java - 加载java库函数到Luaj

java - LuaJ中lua模块和基于元表的类的组合

java - 在 SpringMVC 中,是否有使用表单元素值选择 Controller 方法的方法?

java - 在java中执行lua脚本

java - HTML 自定义 JUnit 报告表对齐不均匀

Java - 使用 arrayList 从文本文件中删除项目

java - 带有 Google Play 服务的 Android 地理围栏 6.5.87

java - Docker 在类路径上找不到资源