我尝试了luaj提供的实用程序方法,用命令行args调用lua文件(这一个http://lua-users.org/wiki/SourceCodeFormatter)
Globals globals = JsePlatform.standardGlobals();
String script ="src/codeformatter.lua";
File f = new File(script);
LuaValue chunk = globals.loadfile(f.getCanonicalPath());
List<String> argList = Arrays.asList("--file","test.lua");
JsePlatform.luaMain(chunk, argList.toArray(new String[argList.size()]));
但是我总是试图调用nil,代码试图访问arg表(虽然我&lt; table.getn(arg)做) - 我尝试了其他的例子,它们都导致了同样的错误 - luaj没有似乎正确地设置了“arg”表 - 即使简单的打印arg [1]也不起作用。
答案 0 :(得分:0)
LuaJ不再支持table.getn了,因为它在lua 5.1中删除了 - 用#varname替换table.getn的每一个出现 - 并在顶部使用ocal args = {...}初始化args数组使其工作
尽管如此,代码格式化程序并没有真正按照我的预期进行操作
答案 1 :(得分:0)
有两个问题:
但是,作为一种变通方法,您可以使用varargs&#34; ...&#34;捕获输入。语法是在 codeformatter.lua 的顶部添加一行,例如
arg = {...}
以下是一段代码摘要:
Globals globals = JsePlatform.standardGlobals();
LuaValue chunk = globals.load(
"arg = {...};" +
"print(#arg, arg[1], arg[2])");
JsePlatform.luaMain(chunk, new String[] {"--file","test.lua"});
产生输出:
2 --file test.lua