【问题标题】:Lua Getting Result Back in LuaJava from Lua function callLua 从 Lua 函数调用返回 LuaJava 中的结果
【发布时间】:2012-01-26 13:42:23
【问题描述】:

如何从 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 调用以及调用返回值的示例?

【问题讨论】:

    标签: lua luajava


    【解决方案1】:

    这样的东西能解决问题吗?

    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(..) 期间我没有得到返回值做一些错误 stackoverflow.com/questions/8621471/…
    猜你喜欢
    • 2013-12-02
    • 2013-07-14
    • 1970-01-01
    • 2018-09-16
    • 2017-01-07
    • 2011-10-05
    • 2013-05-12
    • 2013-05-06
    • 2012-03-17
    相关资源
    最近更新 更多