如何将varargs作为扩展列表传递给方法?

时间:2008-12-03 22:09:17

标签: flash variadic-functions

给出以下Flash方法:

function sendToJava(name:String, ... args)
{
  ExternalInterface.call("sendCommand", name, args);
}

如何确保ExternalInterface.call()以扩展形式解释args?现在,如果我将列表传递给“args”,那么该列表将被ExternalInterface.call()解释为“Object []”类型的单个参数。当参数到达Java时,我无法区分用逗号分隔的多个参数与包含逗号作为其值的一部分的单个参数。

2 个答案:

答案 0 :(得分:5)

一个小错字。它应该是:

function sendToJava(name:String, ... args)
{
  // See Array.unshift()
  args.unshift("sendCommand", name);

  // See Function.apply()
  ExternalInterface.call.apply(null, args);
}

只需将“数组”更改为“应用”

即可

无论如何,非常感谢您发布此内容。你是救星!

答案 1 :(得分:1)

我在IRC上找到答案:)

function sendToJava(name:String, ... args)
{
  // See Array.unshift()
  args.unshift("sendCommand", name);

  // See Function.apply()
  ExternalInterface.call.array(null, args);
}