ActionScript中具有多种基类型的强类型集合(Vector <t,t>)?</t,t>

时间:2011-03-23 09:23:36

标签: actionscript-3 collections vector strong-typing

ActionScript是否有办法处理具有多种基类型的强类型列表?

我实际上在寻找像Vector<T,T>

这样的东西

有可能吗?

或者唯一的方法是创建我自己的类,接受让我们在构造函数中说StringNumber并从该类中创建Vector<T>

2 个答案:

答案 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。