在AS3中使用值数组初始化Vector是否部分地破坏了Vector的用途?

时间:2013-08-05 04:13:17

标签: arrays actionscript-3 vector initialization instantiation

请使用以下代码:

m_vectSpaces = new Vector.<Vector.<Space>>(9);
m_vectSpaces[0] = Vector.<Space>([
        null,
        null,
        SpaceFactory.produceSpace(Space.BLANK, new Block()),
        SpaceFactory.produceSpace(Space.BLANK, new Block()),
        SpaceFactory.produceSpace(Space.BLANK, new Block()),
        SpaceFactory.produceSpace(Space.BLANK, new Block()),
        SpaceFactory.produceSpace(Space.BLANK, new Block())]);

就我所见,看起来这几乎是用一堆初始值实例化Vector的唯一方法(忽略多维方面)。这里的问题是,在Vector完全初始化之前,这显然都被转换为数组。

但是,不是设计用于在很大程度上取代阵列的矢量作为一种更加灵活,更有效的替代方案吗?这样做是一个特别糟糕的主意,这是否部分地击败了使用Vector的整个目的?有没有更好的方法来做到这一点,或者我特别遗漏了什么?谢谢!

1 个答案:

答案 0 :(得分:4)

实际上,您可以使用new <T>[]语法创建一个包含初始内容的新Vector:

var vec:Vector.<Space> = new <Space>[/* your, items */];
// --------------------------^ Notice the lack of 'Vector.' before here.

您的示例使用全局Vector()方法从数组创建Vector。