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



我正在尝试使用下面的代码从java触发lua脚本,它运行得很好。

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

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

您似乎在使用LuaJ。首先,Lua";块";只是在CCD_ 1变量中获取参数的特殊函数。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示例中的invocation等效的参数来调用chunk。

最新更新