峰之博纹 - Pelephone个人博客

[转]全局函数Vector()和构造函数 new Vector()

前些时候,发表了这篇文章:《Flex SDK 4.0以上版本可以在创建Vector实例时就指定元素了(创建Vector实例的新语法)》。后来在我新浪微博上的网友FlashYu给我评论:“以前不是有类似这样的写法吗?var v:Vector.<int> = Vector.<int>([0,1,2,3,4]);” 当时我没仔细看,否决了此说法。后来,他发来邮件,于是,有了此文章(也有了动力在中秋节的今天写了一篇关于技术的文章)。

Vector 类的构造函数只有一种情况:Vector(length:uint = 0, fixed:Boolean = false) ,我们无法像创建Array实例一样在创建Vector实例时指定元素,像这样的语法是不允许的:new Vector(1, 2, 3) 或 new Vector([1, 2, 3]) 。要想在创建Vector实例时指定元素,必须使用这样的语法:var v:Vector.<T> = new <T>[ T1, T2, T3, ... ]; 但,网友FlashYu所说的语法却是正确的:var v:Vector.<int> = Vector.<int>([0,1,2,3,4]); 注意了,等号右边没有关键字 new

为把事情说清楚,下面来一个总结。

以下三种写法都是正确的:

  • // 使用关键字 new 创建一个固定长度为 10 的 Vector 实例
    var v:Vector.<int> = new Vector.<int>(10, true);
  • // 使用关键字 new 创建一个包含 1、2、3 这三个元素的 Vector 实例
    var v:Vector.<int> = new <int>[1, 2, 3];
  • // 通过全局函数 Vector() 把类型为Array的 [1, 2, 3] 进行强制类型转换,转换为 Vector.<int> 类型。注意,没有使用关键字 new 。
    var v:Vector.<int> = Vector.<int>([1, 2, 3]);

以下写法有争议,我在Flash Builder(Flex SDK 4.0)上测试不报错却又测试不成功:

  • var v:Vector.<int> = new Vector.<int>([1, 2, 3]); // 执行 trace(v) 后输出空。

扩展阅读:

大家可以查阅《Adobe Flex 4.1 语言参考》,在这里(http://help.adobe.com/zh_CN/AS3LCR/Flex_4.0/package.html#Vector())说明了全局函数Vector()的使用方法;在这里(http://help.adobe.com/zh_CN/AS3LCR/Flex_4.0/Vector.html#Vector())说明了通过Vector()构造函数来创建实例的方法。

posted @ 2012-03-05 15:34  Pelephone  阅读(2687)  评论(0编辑  收藏  举报