26


2

ActionScript-3に複数のコンストラクターを含めることはできませんか?

私は持っています

    public function Shard() {
    }

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

そして、私は2番目のコンストラクターに乗りました:

_ 複数のコンストラクター定義が見つかりました。 コンストラクターはコードで定義できません。 _

だから、ActionScript-3は複数のコンストラクタを持つことはできませんか?

2 Answer


33


いいえ、異なるシグネチャを持つ同じ関数を複数のコンストラクターにすることはできませんが、デフォルトの引数を使用できます:

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


それよりもさらに広いです。 AS3は、http://en.wikipedia.org/wiki/Function_overloading [function overloading]をまったくサポートしていません。

パラメーターのデフォルトを使用して複数のコンストラクターの外観をシミュレートしたり、パラメーターをさまざまな `init`メソッドに動的にディスパッチしたりできます。 または、カスタムオブジェクトファクトリまたは静的作成メソッドが役立ちます。