Произвольное количество параметров в AS3 - PullRequest
6 голосов
/ 24 февраля 2009

Предлагает ли ActionScript 3.0 какие-либо средства для принятия произвольного числа параметров? Я обычно использую .NET, но меня заставляют использовать AS3 для проекта, и что-то в духе функции blah (params double [] x) было бы здорово для вспомогательной библиотеки.

Спасибо;

Ответы [ 4 ]

14 голосов
/ 24 февраля 2009

Проверьте остальные параметры: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/statements.html#..._(rest)_parameter

package {
  import flash.display.MovieClip;

  public class RestParamExample extends MovieClip {
    public function RestParamExample() {
        traceParams(100, 130, "two"); // 100,130,two
        trace(average(4, 7, 13));     // 8
    }
  }
}


function traceParams(... rest) {
 trace(rest);
}

function average(... args) : Number{
  var sum:Number = 0;
  for (var i:uint = 0; i < args.length; i++) {
    sum += args[i];
  }
  return (sum / args.length);
}
3 голосов
/ 24 февраля 2009

Попробуйте эллипс (например, C) ...

function trace_all (... args): void {
    for each (a in args) {
       trace (a);
    }
}
2 голосов
/ 24 февраля 2009

В дополнение к параметру " rest " есть объект " arguments ".

function foo() {
    for (var i:Number = 0; i < arguments.length; i++) {
        trace(arguments[i]);
    }
}
0 голосов
/ 24 февраля 2009

Если вы хотите передать неопределенное количество упорядоченных значений, просто передайте массив

function foobar(values:Array):void
{
    ...
}


foobat([1.0, 3.4, 4.5]);
foobat([34.6, 52.3, 434.5, 3344.5, 3562.435, 1, 1, 2, 5]);

Если вы хотите передать именованные параметры, где передаются только некоторые из них, используйте объект

   function woof(params:object):string
   {
       if (params.hasProperty('name')) {
           return name + "xxx";
       }
       ...
   }

   woof({name:'Joe Blow', count: 123, title: 'Mr. Wonderful'});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...