这是一个简单的代码:
var a:Array = new Array( ins0, ins1, ins2, ins3,...., ins10000) ;
findIns( ins1500) ;
function findIns( ins:SomeInstance ) {
for ( var i = 0 ; i< a.length ; i++) {
if ( a[i] == ins ) {
trace ( "FOUND IT");
break;
}
}
}
在上面的代码中没有“int”或“string”。它们是一些复杂类的实例。因此,在这种情况下使用Vector代替数组是明智的。
在我看来,它应该是明智的,因为实例是“数字记忆位置”吗?
答案 0 :(得分:1)
如果数组的内容都是同一个类的实例,那么是Vector
肯定会比Array
更好。
有关详细信息,请参阅文档:
性能:使用Vector实例时,数组元素访问和迭代要比使用数组时快得多。
类型安全:在严格模式下,编译器可以识别数据类型错误。数据类型错误的示例包括将不正确的数据类型的值分配给Vector,或者在从Vector读取值时期望错误的数据类型。但请注意,当使用push()方法或unshift()方法向Vector添加值时,不会在编译时检查参数的数据类型。相反,它们会在运行时进行检查。
可靠性:运行时范围检查(或固定长度检查)显着提高了阵列的可靠性。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Vector.html
答案 1 :(得分:1)
是的,你是对的。存储在向量中的内容是对对象的引用,而不是对象本身。您可以检查执行以下操作:
var ref:yourType = a[0];
a[0] = someOtherObjectInstance;
trace(ref.toString());
您会发现ref
仍指向原始对象。