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 コード内から print メソッドを使用して hello 関数を呼び出すと、戻り値を取得できました。AndroLuaを使用して Android デバイスで実行しています