ActionScript是否有办法处理具有多种基类型的强类型列表?
我实际上在寻找像Vector<T,T>
?
有可能吗?
或者唯一的方法是创建我自己的类,接受让我们在构造函数中说String
和Number
并从该类中创建Vector<T>
?
答案 0 :(得分:1)
不,不是标准的。如果项目不是主要类型之一,您可以构建接口矢量或超类。例如,DisplayObjects的向量包含MovieClip和Sprite的混合(它们都从DisplayObject继承)。
例如:
var v:Vector.<DisplayObject> = new <DisplayObject>[
new MovieClip(),
new Sprite(),
new MovieClip()
];
trace(v[0].alpha); // outputs 1
trace(v[0].currentFrame); // error - not a DisplayObject property
在这种情况下,矢量项只会公开源自“矢量”类型的属性和方法。但这正是你应该使用向量的原因,它确保你正在处理的项目类型。
我不知道您的具体案例或目标,但我会考虑为什么您需要在矢量中使用混合类型。正如您所说,您的替代选项是创建包装类。下面的例子远非完整,而是一个起点。
class Wrapper {
public var _value:*; // should be private with get/set's
public function Wrapper(value:*) {
if(value is String || value is Number) {
_value = value;
}
}
}
答案 1 :(得分:0)
你不能这样做,所以我会继续你的建议,即创建一个包含两个属性(比如Number,String)的特殊类,并创建一个Vector。