【问题标题】:return values from calling a function using lua alchemy使用 lua alchemy 调用函数返回值
【发布时间】:2011-06-10 12:53:08
【问题描述】:

我正在使用动作脚本调用 lua 中的函数 callstack : Array = luaAlchemyInstance.doString("luafunction");

我的函数应该返回一些值

function luafunction()
return true, 125
end

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

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

【问题讨论】:

  • 我不知道lua-alchemy,但不应该是luaAlchemyInstance.doString("return luafunction()")吗?注意 return 和 call 括号。
  • @MiKy:您应该将其发布为答案,以便我们给予您适当的认可!
  • 嘿,关于 SO 上的 lua-alchemy 的第一个问题!凉爽的! :-)

标签: actionscript-3 lua alchemy alchemyapi


【解决方案1】:

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

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

doString("return luafunction()")

请参阅 documentationexample

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      您似乎正试图同时返回布尔值和数字/int/uint 值。

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

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

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

      trace(obj.myBoolean, obj.myNumber);
      

      【讨论】:

      • 抱歉,问题是关于使用 lua-alchemy 调用 Lua 函数,而不仅仅是从任意 AS3 代码返回多个值。
      猜你喜欢
      • 2013-07-14
      • 2018-09-16
      • 2012-12-10
      • 1970-01-01
      • 2012-01-26
      • 2021-12-13
      • 2016-09-27
      • 1970-01-01
      • 2015-06-26
      相关资源
      最近更新 更多