2011-06-20 16 views
0

比方說,我有一個類:Actionscript 3與單個構造函數參數?

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

如果我做var s:SomeClass = SomeClass("test");,它試圖將字符串轉換爲SomeClass。我如何防止它做到這一點?

對不起,我是AS3的新手。

回答

8

你錯過了new操作:

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


除非您使用new運營商,是不是真的有在ActionScript中創建一個類成員的好方法。但是有一些值得注意的例外。數組,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. 
+0

...或有他的木門前很多樹!? ;-) – splash

+0

+1啊好趕 –

+0

哇。失敗。我更習慣於Python和C++的沒有新的(對於非指向對象的指針) – Pwnna

0

我從來沒有見過它嘗試自動轉換數據類型像你說的它。
但是,在任何情況下,您不是在類型轉換您的參數,並且您沒有聲明返回類型。
作爲一個構造函數,它需要返回void。
您還沒有聲明變量名的範圍/
你也沒有聲明包

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