Как передать varargs в метод в виде расширенного списка? - PullRequest
3 голосов
/ 04 декабря 2008

Учитывая следующий метод Flash:

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

Как мне убедиться, что ExternalInterface.call () интерпретирует аргументы в развернутом виде? Прямо сейчас, если я передам список в «args», этот список будет интерпретирован как отдельный аргумент типа «Object []» ExternalInterface.call (). Когда аргументы доходят до Java, у меня нет возможности провести различие между несколькими аргументами, разделенными запятыми, и одним аргументом, содержащим запятые как часть его значения.

Ответы [ 2 ]

5 голосов
/ 25 января 2009

Одна маленькая опечатка. Должно быть:

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

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

Просто измените «массив» на «применить»

В любом случае, огромное спасибо за публикацию этого. Вы спасатель!

1 голос
/ 04 декабря 2008

Я нашел ответ на IRC:)

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

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