![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2011
Сообщений: 10
|
Заполняю простой массив элементами.
количество элементов любое, в данном случае 555: private var myTestArray:Array = new Array(); public function Main():void { fillmyArray(555); } private function fillmyArray(a:int):void { for (var i:int = 0; i<a; i++) { myTestArray[i] = 1; } } Выхожу из положения вложением одного массива в другой. private var myArray:Array = new Array([], [], [], [], []); public function Main():void { fillArray(5, 10); } private function fillArray(n:int,m:int):void { for (var i:int = 0; i<n; i++) { for (var j:int = 0; j < m; j++) { myArray[i][j] = 0; } } } Если я вызываю функцию fillArray(5, 10); с 4 или меньше вместо 5, проблемм нет. Если ставлю больше 5 то получаю ошибку. Причём вместо 10 могу поставить опять таки всё что угодно. Как избежать такой жёсткой привязки к количеству new Array([], [], [], [], []); ??? Необходимо динамически задавать Любое количество "столбцов". Заранее спасибо Последний раз редактировалось udaaff; 23.04.2011 в 20:31. |
|
|||||
|
Модрон-ветеринар
|
В AS2 я делаю обычно так:
var myArray:Array = new Array(); for (i = 0; i < 200; i++) { myArray[i] = new Array(); } Соответственно потом будут существовать двести массивов второго "уровня", которые можно заполнять. т.е. myArray[199][j] можно будет задать. И количество и вложенность можно и более сделать, если что. "Трехмерный": var myArray:Array = new Array(); for (i = 0; i < 200; i++) { myArray[i] = new Array(); for (j = 0; j < 300; j++) { myArray[i][j] = new Array(); //как-то заполняются сразу myArray[i][j][0] = ... myArray[i][j][1] = ... myArray[i][j]['name'] = ... myArray[i][j]['lastname'] = ... //или потом... } }
__________________
Идите первым! Последний раз редактировалось mooncar; 23.04.2011 в 20:50. |
|
|||||
|
В AS3 нет многомерных массивов. Есть массивы массивов.
Пользуемся поиском. http://www.flasher.ru/forum/showthre...F1%F1%E8%E2%FB
__________________
тут я |
|
|||||
|
strange mood
|
private var myArray :Array; public function Main():void{ this.myArray = this.newArray2D(5, 7); }//Main private function newArray2D(n:int, m:int):Array/*of Array of int*/{ //Будущая матрица var newArray:Array/*of Array of int*/ = []; //Добавляем строки по одной for(var i:int = 0; i < n; i++){ //Будущая строка var newRow:Array/*of int*/ = []; //Заполняем строку for(var j:int = 0; j < m; j++){ //Добавляем ноль в конец строки newRow.push(0); }//for j //Добавляем полученную строку в матрицу newArray.push(newRow); }//for i return newArray; }//newArray2D
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
strange mood
|
Просто привык всегда явно указывать область видимости, а то иногда читаю чужой код и думаю: толи это локальная переменная, толи свойство объекта, толи статическое свойство класса, толи вообще какая-нибудь глобальная константа.
Да, я знаю про то, что все нормальные IDE умеют показывать подсказку с контекстом объявления переменной. Но если нужно понять логику работы какого-нибудь большого класса, и приходится быстро проглядывать много кода, то целиться по каждой непонятной переменной и кликать либо ждать появления подсказки - это убиться.
__________________
тонкий тролль, осеянный благодатью Последний раз редактировалось Gaen; 23.04.2011 в 21:47. |
|
|||||
|
Регистрация: Aug 2010
Сообщений: 86
|
GAIKER, отличная привычка. У себя вырабатывал такую долгое время. Зато читается намного легче. =)
|
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Так смысла то два у this: 1. улучшение читабельности кода 2. указание конкретной области видимости.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:56. |
|
|
« Предыдущая тема | Следующая тема » |
|
|