让我说我有一个班级:
public class SomeClass{
var name:String;
public function SomeClass(n){
name = n;
}
}
如果我var s:SomeClass = SomeClass("test");
,它会尝试将字符串转换为SomeClass
。我该如何阻止它这样做?
抱歉,我是AS3的新手。
答案 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;
}
}
}