使用 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 示例中的调用。
我正在尝试使用以下代码从 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 示例中的调用。