我正在尝试使用下面的代码从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。