ActionScript-3 не может иметь несколько конструкторов? - PullRequest
26 голосов
/ 24 августа 2010

У меня есть

    public function Shard() {
    }

    public function Shard(x:Number, y:Number, vx:Number, vy:Number, rotation:Number, spin:Number)
    {
      ...
    }

И я получил второй конструктор:

Найдено несколько определений конструктора.Конструктор не может быть определен в коде.

Итак, ActionScript-3 не может иметь несколько конструкторов?

Ответы [ 2 ]

33 голосов
/ 24 августа 2010

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

public function Shard(x:Number=NaN, y:Number=NaN) {
  //...
}

тогда вы можете позвонить new Shard() или new Shard(100) или new Shard(100, 200)

или вы также можете использовать переменные аргументы:

public function Shard(...args){
 if (args.length==0) {
   //...
 } else {
  //...
  var firstArg:Object=args[0];
  //...
 }
}
12 голосов
/ 24 августа 2010

Это даже шире, чем это. AS3 вообще не поддерживает перегрузку функции .

Вы можете смоделировать появление нескольких конструкторов со значениями параметров по умолчанию и / или динамически распределить параметры по различным init методам. В качестве альтернативы могут помочь пользовательские фабрики объектов или статические методы создания.

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