LuaJ - 在Java中创建Lua函数

有没有一种方法可以在Java中创建一个Lua函数,并将其传递到Lua中以将其分配到变量中?

例如:

  • 在我的Java类中:

    private class doSomething extends ZeroArgFunction {
        @Override
        public LuaValue call() {
            return "function myFunction() print ('从另一边问候您!'); end" //这只是一个示例
        }
    }
    
  • 在我的Lua脚本中:

    myVar = myHandler.doSomething();
    myVar();
    

在这种情况下,输出将为:"从另一边问候您!"

点赞
用户2556943
用户2556943

尝试使用 Globals.load() 方法从脚本字符串中构建函数,并使用 LuaValue.set() 方法在 Globals 中设置值:

static Globals globals = JsePlatform.standardGlobals();

public static class DoSomething extends ZeroArgFunction {
    @Override
    public LuaValue call() {
        // 运行由内联脚本编译的函数
        return globals.load("print 'hello from the other side!'");
    }
}

public static void main(String[] args) throws Exception {
    // 将 DoSomething 函数加载到 Globals 中
    globals.set("myHandler", new LuaTable());
    globals.get("myHandler").set("doSomething", new DoSomething());

    // 运行函数
    String script =
            "myVar = myHandler.doSomething();"+
            "myVar()";
    LuaValue chunk = globals.load(script);
    chunk.call();
}
2016-01-23 03:27:23