如何定义一个包含单个元素的数组?

时间:2011-12-12 20:56:57

标签: arrays flash actionscript-3

我正在尝试使用单个元素定义一个数组...所以,

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方法是用单个元素定义数组吗?

4 个答案:

答案 0 :(得分:10)

  

var arr:Array = [1]; //arr[0]=1 but i think it's AS1.0 notation..

为什么呢?这是完全合法的简写数组初始化,它正是这样做的方式。

答案 1 :(得分:5)

大笑,我记得一年或两年回来处理这个问题,我做的方式是2行。

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