使用 java 在 lua 中传递命令行参数

Pass command line arguments in lua using java

我正在尝试使用以下代码从 java 触发 lua 脚本,它工作正常。

Globals globals = JsePlatform.standardGlobals();
LuaValue chunk = globals.loadfile("com/example/hello.lua");
chunk.call();

现在我想将命令行参数传递给我的 lua 脚本,有人可以帮助 mw 了解如何将命令行参数从 java 传递到 lua 文件的代码。

您似乎在使用 LuaJ。首先,Lua“块”只是特殊函数,它们在 ... 可变参数中获取参数。 hello.lua 可能如下所示:

local arg1, arg2 = ...
print("arg1", arg1, "arg2", arg2)

使用 Lua 的 loadfile,您可以在执行加载的块时将参数简单地作为函数参数传递:

local chunk = assert(loadfile"hello.lua") -- compile & load the file, do not run it
chunk("first arg", "second arg") -- run the file with two args

您当前的 Java 代码调用 chunk.call() 时不带任何参数,这等同于 Lua 中的 chunk()。您可以使用 invoke 方法传递 LuaValue 个参数列表:

只需将 chunk.call(); 替换为

chunk.invoke(new LuaValue[] {LuaValue.valueOf("first argument"), LuaValue.valueOf("second argument")});

使用两个参数调用块,等同于上述 Lua 示例中的调用。