java - LuaJ - 在 Java 中创建 Lua 函数

标签 java lua luaj

有没有办法在Java中创建一个Lua函数并将其传递给Lua以将其分配给变量?

例如:

  • 在我的 Java 类中:

    private class doSomething extends ZeroArgFunction {
        @Override
        public LuaValue call() {
            return "function myFunction() print ('Hello from the other side!'); end" //it is just an example
        }
    }
    
  • 在我的 Lua 脚本中:

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

在这种情况下,输出将是:“Hello from the other side!”

最佳答案

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

static Globals globals = JsePlatform.standardGlobals();

public static class DoSomething extends ZeroArgFunction {
    @Override
    public LuaValue call() {
        // Return a function compiled from an in-line script
        return globals.load("print 'hello from the other side!'");
    }
}

public static void main(String[] args) throws Exception {
    // Load the DoSomething function into the globals
    globals.set("myHandler", new LuaTable());
    globals.get("myHandler").set("doSomething", new DoSomething());

    // Run the function
    String script = 
            "myVar = myHandler.doSomething();"+
            "myVar()";
    LuaValue chunk = globals.load(script);
    chunk.call();
}

关于java - LuaJ - 在 Java 中创建 Lua 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34945883/

相关文章:

java - 从外部源(例如使用 Spring Boot 的 API)注入(inject)应用程序属性

java - 如何在简单的现金存取程序中处理多线程

lua - 关于 Lua 5.3 字节码的文档

java - Luaj 尝试索引? (一个函数值)

java - 如何用CGLib调用原始方法?

java - 从 Luaj 运行 Java 方法, "index expected, got string"

java - 如何在 NetBeans 中使用 Java 代码连接 Sybase 数据库?

java - 如何改进我的正则表达式(不起作用)

c - 确定 Lua 从 C 扩展函数内部期望的返回值数量

lua - 将值存储在 lua 的 userdata 对象中