【问题标题】:Returning multiple values with LuaJava使用 LuaJava 返回多个值
【发布时间】:2012-03-26 05:07:49
【问题描述】:

我需要能够将 (X, Y) 位置从 Java 返回到 Lua,但我不知道该怎么做。使用 C API,您只需将值压入堆栈,然后返回返回值的数量,但这似乎不是 LuaJava 的做法。有什么建议吗?

【问题讨论】:

    标签: lua luajava


    【解决方案1】:

    问题可能在于第一个参数始终是 JavaFunction 对象本身。假设您想要一个函数addmult,它接受两个数字,并返回它们的总和和乘积。数字参数必须作为索引 2 和 3 检索,如下所示:

    JavaFunction addmult = new JavaFunction(L) {                
        @Override
        public int execute() throws LuaException {
            double x = L.toNumber(2);
            double y = L.toNumber(3);
            L.pushNumber(x+y);
            L.pushNumber(x*y);
            return 2;
        }
    };
    addmult.register("addmult");
    

    现在,您应该在代码中得到类似的结果:

    print(addmult(3, 5)) --> 8    13
    

    【讨论】:

      猜你喜欢
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 2015-12-08
      • 2010-09-29
      相关资源
      最近更新 更多