使用Lua Alchemy调用函数时返回值

使用以下代码在 ActionScript 中从 Lua 调用函数:

callstack:Array = luaAlchemyInstance.doString("luafunction");

我的函数应该返回一些值:

function luafunction()
return true, 125
end

当我在 AS3 中查看调用堆栈数组时,我只收到了成功/失败部分。数组长度为 1,为 true,并且没有包含任何返回值。

有什么想法出了问题吗?干杯!

原文链接 https://stackoverflow.com/questions/4714898

点赞
stackoverflow用户147915
stackoverflow用户147915

我只在 Actionscript 中看到过一次只返回一个变量类型的函数(数字、字符串、布尔值等)。

看起来你正在尝试同时返回布尔值和数字/整数/无符号整数值。

可以尝试将它们都作为对象值返回,就像这样:

function luafunction():Object
{
var obj:Object = new Object();
obj.myBoolean = true; // 布尔值
obj.myNumber = 125; // 数字/整数/无符号整数值
return obj;
}

然后你可以通过类似以下的方法来检索你的值:

trace(obj.myBoolean, obj.myNumber);
2011-01-17 19:55:26
stackoverflow用户221509
stackoverflow用户221509

我不了解lua-alchemy,但如果doString()的语义与标准Lua相同,则调用该函数的正确方法应该是:

callstack : Array = luaAlchemyInstance.doString("return luafunction()");
2011-01-17 20:14:49
stackoverflow用户6236
stackoverflow用户6236

doString() 返回一个由函数调用返回的值组成的数组。该数组的第一项是 true 或者 false,表示函数调用成功或失败。如果结果是 false,第二项是错误信息。

还需要注意,doString() 的参数应该是实际的 Lua 代码,因此应该是

doString("return luafunction()")

请参考文档示例代码

2011-01-18 06:47:03