我正在尝试使用单个元素定义一个数组...所以,
var arr:Array = new Array(1,2,3,4) // arr[0] = 1
// but
var arr:Array = new Array(1) // arr[0] = undefined
//Also,
var arr:Array = new Array([1]) // arr[0] = 1 , << ILLUSION
//Because, arr[0] is NOT A NUMBER, IT ITSELF IS OF TYPE=> ARRAY.
var arr:Array = [1] //arr[0]=1 but i think it's AS1.0 notation..
那么,他们的AS3.0方法是用单个元素定义数组吗?
答案 0 :(得分:10)
var arr:Array = [1]; //arr[0]=1 but i think it's AS1.0 notation..
为什么呢?这是完全合法的简写数组初始化,它正是这样做的方式。
答案 1 :(得分:5)
var arr:Array = new Array();
arr[0] = "the element";
这是因为如果传递单个整数值,Array的构造函数接受数组的大小作为参数。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#Array()
答案 2 :(得分:1)
weltraumpirat是正确的,因为代码将编译,它仍然是actionscript 1/2表示法(AVM1)。你说你想知道“AS3方式”...... AS3(AVM2)与AS1 / AS2(AVM1)的一个主要区别和好处是严格打字。因此创建了Vector对象,又称严格类型的数组(由于严格的输入,它更快)。以下是使用一个或多个已定义对象初始化类型化数组的正确方法:
var vector:Vector.<String> = Vector.<String>(["v1", "v2", "v3"]);
在此处查看更多信息:
http://www.daveoncode.com/2009/04/06/actionscript-vector-class-initialization-with-a-source-array/
编辑
对于所有不知道他们在说什么的人:
http://www.mikechambers.com/blog/2008/09/24/actioscript-3-vector-array-performance-comparison/
简单测试,矢量= =比数组快40%
http://www.masonchang.com/blog/2011/4/21/tamarin-on-llvm-more-numbers.html
tamarin JIT测试摘要,键入的变量比每种情况下未键入的变量快20%或更快。
对于那些真的不知道他们在说什么的人来说,Tamarin是flash虚拟机(至少是开源组件,核心是UI和其他东西)。
再次编辑......叹息
对于那些不了解“上下文”的人......当我说向量更快时...我说的是虚拟机中对象的整体性能。这不是我自己的说法,它来自adobe本身,并且我的答案中包含了闪存平台福音传播者的基准(或者更确切地说是链接)。也许与我争论的人没有英语作为他们的第一语言.......
答案 3 :(得分:0)
var myArray:Array = new Array();
myArray.push(1);
trace(myArray[0]); //1