1

我从 actionscript 调用 lua 中的函数 callstack : Array = luaAlchemyInstance.doString("luafunction");

我的函数应该返回一些值

function luafunction()
return true, 125
end

当我查看 as3 中函数返回的调用堆栈数组时,我只收到成功/失败部分。数组长度为 1,true,并且不包含我的返回值。

知道出了什么问题吗?干杯

4

3 回答 3

1

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

callstack : Array = luaAlchemyInstance.doString("return luafunction()");
于 2011-01-17T20:14:49.480 回答
1

doString()返回值的数组,由调用返回。该数组的第一项是trueor false,表示调用成功或失败。如果是false,则第二项是错误消息。

另请注意,doString()将实际的 Lua 代码作为参数,所以它应该是

doString("return luafunction()")

请参阅文档示例

于 2011-01-18T06:47:03.847 回答
-2

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

看起来您正试图同时返回一个布尔值和一个 Number/int/uint 值。

可以尝试将两者都作为对象值返回,如下所示:

function luafunction():Object
{
var obj:Object = new Object();
obj.myBoolean = true;
obj.myNumber = 125;
return obj;
}

然后您可以通过以下方式检索您的值:

trace(obj.myBoolean, obj.myNumber);
于 2011-01-17T19:55:26.517 回答