Показать сообщение отдельно
Старый 26.06.2008, 12:14
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 13  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
Что некорректно в этом коде?!

Код:
var arr:Array = [];
arr[0] = []
arr[0][0] = "ege"
arr[0][1] = "fgh"
trace(arr[0].length)
//Выведет 2

Здесь без потери ранее записанных данных при изменении размерности массива не обойтись. Потому и не работает.
Нужно определить размерность массива заранее. А вот размер каждого измерения Вы можете создавать динамически.
Цитата:
Код:
var a:Array = [];
a[0] = [];
a[0][0] = 'AGA';
a[0][0][0] = []
a[0][0][0] = 'UGU';
trace(a[0][0][0]);
Давайте разберем этот код подробнее для понимания проблемы.

В первой строке Вы создаете одномерный массив a.
Во второй строке, Вы создаете второе измерение массива a
В третьей строке Вы присваиваете ячеке двумерного массива значение "АGA". Пока все вроде бы корректно.
В четвертой строке, Вы пытаетесь создать уже четвертое измерение минуя 3. Разумеется это невозможно. Поэтому, Вы вынуждены будете ячейку a[0][0] =="AGA" переопределить массивом создающим 3-е измерение. Разумеется "AGA" сохранено не будет.

Код:
var a:Array = [];
a[0] = [];
a[0][0] = 'AGA';
a[0][0] = []
a[0][0][0] = 'UGU';
trace(a[0][0][0]);
//"AGA" больше не существует!!!
__________________
Случайность, господа, это знаете ли непознанная необходимость.


Последний раз редактировалось Alex_beginner; 26.06.2008 в 12:28.