带有单个构造函数参数的Actionscript 3?

时间:2011-06-20 19:56:40

标签: flash actionscript-3 actionscript

让我说我有一个班级:

public class SomeClass{
    var name:String;
    public function SomeClass(n){
        name = n;
    }
}

如果我var s:SomeClass = SomeClass("test");,它会尝试将字符串转换为SomeClass。我该如何阻止它这样做?

抱歉,我是AS3的新手。

2 个答案:

答案 0 :(得分:8)

您错过了new运营商:

var s:SomeClass = new SomeClass('test');


除非您使用new运算符,否则在ActionScript中创建类成员确实不是一个好方法。但是,有一些值得注意的例外。 Array,XML,XMLList,int,uint,Number,String和Object几乎不应该使用它们的构造函数。

//To get a new array
var a:Array = [/*initial values*/];
// a new Object
var o:Object = {};

在AS中,将类的名称用作函数实际上是“将其强制转换为类”。您也可以通过as运算符执行此操作。区别在于as将在失败时返回null,其他方法将引发错误:

// I NEED this to be a Foo, so I will force the matter.
var foo:Foo = Foo(otherVariable);

// It would be nice to have this as a Foo, but if it is null, whatever:
var foo:Foo = otherVariable as Foo.

答案 1 :(得分:0)

我从未见过尝试自动转换数据类型,就像你说的那样 但是在任何情况下你都没有输入你的参数,你没有声明一个返回类型 作为构造函数,它需要返回void 您也没有声明变量名称的范围/
你也没有声明包

package{
  public class SomeClass{
      public var name:String;
      public function SomeClass(n:String):void{
          this.name = n;
      }
  }
}