Как определить массив с одним элементом в нем? - PullRequest
4 голосов
/ 13 декабря 2011

Я пытаюсь определить массив с одним элементом ... так,

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 ]

10 голосов
/ 13 декабря 2011

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

Почему? Это совершенно легальная сокращенная инициализация массива, и это именно тот способ, которым это нужно.

5 голосов
/ 13 декабря 2011

Лол, я помню, что имел дело с этим год или два назад, как я это делал, с двумя строками.

var arr:Array = new Array();
arr[0] = "the element";

Это потому, что конструктор для Array принимает размер массива в качестве аргумента, если вы передаете одно целочисленное значение. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#Array()

1 голос
/ 13 декабря 2011

Weltraumpirat прав только в том, что код будет компилироваться, это все же нотация ActionScript 1/2 (AVM1). Вы сказали, что хотите знать «путь AS3» .... и одним из основных отличий AS3 (AVM2) от AS1 / AS2 (AVM1) является строгая типизация. Следовательно, создается объект Vector, он же строго типизированный массив (и он быстрее благодаря такой строгой типизации). Вот правильный способ инициализировать типизированный массив с 1 или более определенными объектами:

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

Сводка JAR-тестов тамарина, типизированные переменные, выполняющие на 20% или более быстрее, чем нетипизированные в каждом сценарии.

Для людей, которые ДЕЙСТВИТЕЛЬНО не знают, о чем говорят, Tamarin - это флэш-виртуальная машина (по крайней мере, компонент с открытым исходным кодом, ядро ​​без пользовательского интерфейса и другие вещи).

Редактировать ... еще раз .. вздох
Для людей, которые не понимают, что такое «контекст» ... когда я говорю, что вектор БЫСТРО ... Я говорю об общей производительности объекта в виртуальной машине. Это не мое собственное утверждение, оно исходит от самих Adobe, и в мой ответ включены тесты евангелиста флэш-платформы (или, скорее, ссылка на). Может быть, люди, которые спорят со мной, не считают английский своим родным языком .....

0 голосов
/ 13 декабря 2011
var myArray:Array = new Array();
myArray.push(1);

trace(myArray[0]); //1
...