我有一个在Java String中定义的Lua函数,我想传递一个String arg
String luaCode = "function hello(name) return 'Hello ' + name +'!' end";
执行代码
public String runGreetingFromLua(String src, String arg) throws LuaException {
L = LuaStateFactory.newLuaState();
L.openLibs();
L.setTop(0);
int ok = L.LloadString(src);
if (ok == 0) {
L.getGlobal("debug");
L.getField(-1, "traceback");
L.remove(-2);
L.insert(-2);
L.getGlobal("hello");
L.pushString(arg);
ok = L.pcall(1, 0, -2);
if (ok == 0) {
String res = output.toString();
output.setLength(0);
return res;
}
}
throw new LuaException(errorReason(ok) + ": " + L.toString(-1));
}
获取Unknown error 5: error in error handling
我对lua和luajava完全不熟悉,我确信这个简单的例子是不了解LauState对象是如何工作的,java文档并不令人惊讶(或者我错过了一些非常新手的东西)。如果我从lua代码中调用hello函数并使用print方法,我就能得到一个返回值。我正在使用AndroLua
在Android设备上执行答案 0 :(得分:0)
通过删除luajava示例中所述的一些错误处理代码来管理以实现此工作,这些示例似乎会干扰并将对L.LLloadString
的调用交换为L.LdoString(src);
和L.pcall
到{{ 1}}。
L.call