Lua从Lua函数调用返回LuaJava中的结果

Lua从Lua函数调用返回LuaJava中的结果,lua,luajava,Lua,Luajava,如何从LuaJava中的Lua函数调用中获取值 假设我有calc.lua: function foo(n) return n*2 end 我在Java中调用该函数,如下所示: LuaState luaState; this.luaState = LuaStateFactory.newLuaState(); this.luaState.openLibs(); this.luaState.LdoFile("calc.lua"); this.luaState.getGlobal("foo"); th

如何从LuaJava中的Lua函数调用中获取值

假设我有calc.lua:

function foo(n) return n*2 end
我在Java中调用该函数,如下所示:

LuaState luaState;
this.luaState = LuaStateFactory.newLuaState();
this.luaState.openLibs();
this.luaState.LdoFile("calc.lua");
this.luaState.getGlobal("foo");
this.luaState.pushNumber(5.0);
int retcode=this.luaState.pcall(1, 1,0);
现在我需要调用LuaState对象来获得最后一个函数调用foo(5)的结果吗


是否有一个例子显示了Java->Lua调用以及调用返回值?

这样的方法可以实现吗

int top_index = luaState.getTop();
double result = luaState.isNumber(top_index) ? 
                luaState.toNumber(top_index) : 0.0;

Lua还允许使用负索引从堆栈顶部指向。因此,基本上您只需要执行
double result=luaState.toNumber(-1)
,因为如果不是数字,它将返回0。谢谢。我仍然在执行LuaState.pcall(..)时遇到问题,基本上我没有得到返回值,因为在执行pcall(..)时出现了一些错误