Именованный аргумент в ActionScript - PullRequest
0 голосов
/ 13 июня 2011

Если у меня есть такая функция, как:


        public function defaultValues(first = 1,second =2,third = 3)
        {
            trace(first);
            trace(second);
            trace(third);
        }

Как я могу вызвать эту функцию, передав только значение для секунды = 20?

Ответы [ 4 ]

7 голосов
/ 13 июня 2011

ActionScript3 не поддерживает именованные параметры. Если вы действительно хотите это поведение, вы можете использовать ассоциативный массив ... но я не рекомендую его, если вы действительно не хотите быть динамическим:

public function defaultValues(params:Object)
{
    var first = "first" in params ? params.first : 1;
    var second = "second" in params ? params.second : 2;
    var third = params.third ? params.third : 3;

    trace(first);
    trace(second);
    trace(third);
}

Тогда вы можете назвать это:

defaultValues({second: 99});
2 голосов
/ 13 июня 2011

Вам следует позвонить:

defaultValues(1, 20);

Кстати, крайне плохо не практикуйте строгую типизацию в ActionScript. Может быть, у вас есть Javascript или ActionScript 2 фон, но это не может быть оправданием. Итак, ваш метод должен выглядеть так:

    public function defaultValues(first:int = 1,second:int =2,third:int = 3) : void
    {
        trace(first);
        trace(second);
        trace(third);
    }
1 голос
/ 14 июня 2011

Вы можете иметь класс параметров только для этой функции.Хотя это немного излишне, это даст вам дополнительные параметры, которые строго типизированы.Однако это требует гораздо больше кодирования.

class DefaultValuesParams {
    public var first:int = 1;
    public var second:int = 2;
    public var third:int = 3;
}

var optionalArgs:DefaultValueParams = new DefaultValueParams();
optinalArgs.second = 20;
defaultValues(optionalArgs);
0 голосов
/ 13 июня 2011

Возможно, вы захотите перегрузить метод только одним параметром, а из перегруженного метода вызовите метод 3 param со значениями по умолчанию для первого и третьего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...