在AS3
中,以下方法接受任何类型的参数:
public function myFunc(data:*) :void
是否可以将类型限制为特定的包?可能是这样的:
public function myFunc(data:(my.package:*)) //Accepts any type from my.package
在AS3
中,以下方法接受任何类型的参数:
public function myFunc(data:*) :void
是否可以将类型限制为特定的包?可能是这样的:
public function myFunc(data:(my.package:*)) //Accepts any type from my.package
这是可能的,但只会在运行时进行类型控制。
import flash.utils.getQualifiedClassName;
public function myFunc(data:*):void {
if (data is Object) {
var fqcn:String=getQualifiedClassName(data);
if (fqcn.slice(0,10)!='my.package') return; // otherwise work
// work here
} // simple types process if needed
}
这听起来像是一个设计问题。在编译期间进行这项工作的一种方法是,如果参数类型是自定义类:
public function myFunc(data:MyCustomClass):void
假设其中的所有类my.package
都是不同的,您可以创建一个自定义基类,该基类扩展Object
并让您的所有类都my.package
从该基类扩展。当然,但是,如果您的my.package
类的继承范围不那么广泛,那么您就不需要这么远了。例如,只有DisplayObject
当其中的所有类my.package
都属于该类型时,您才应该扩展 from。
可能还有一种方法可以完成您想要使用的内容namespaces
,但我不确定。