【问题标题】:ActionScript-3 cannot have multiple constructors?ActionScript-3 不能有多个构造函数?
【发布时间】:2011-04-03 08:43:29
【问题描述】:

我有

    public function Shard() {
    }

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

我上了第二个构造函数:

多个构造函数定义 成立。构造函数可能未定义 在 代码。

那么,ActionScript-3 不能有多个构造函数?

【问题讨论】:

  • 为什么要多个构造函数?有些参数是可选的吗?

标签: flash actionscript-3


【解决方案1】:

不,你不能有多个构造函数,也不能有不同签名的同一个函数,但你可以使用默认参数:

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];
  //...
 }
}

【讨论】:

    【解决方案2】:

    它甚至比这更广泛。 AS3 完全不支持function overloading

    您可以使用参数默认值模拟多个构造函数的外观和/或将参数动态分派给各种init 方法。或者,自定义对象工厂或静态创建方法可能会有所帮助。

    【讨论】:

    • +1。我使用静态方法来初始化和返回一个新实例(有点像工厂)。通常,这些方法定义在同一个类中,只是为了简化调用代码的接口。在某些情况下,这是一种简单而有效的解决方法(尽管如果您想拥有不同的这些“构造函数”,则必须进行名称修改,因为编译器不会为您这样做)
    猜你喜欢
    • 2010-10-21
    • 2013-06-05
    • 2014-08-08
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 2011-10-05
    相关资源
    最近更新 更多