![]() |
|
||||||||||
|
|||||
|
Banned
[+5 15.02.09]
[++5 15.02.09] Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
|
Цитата:
![]() |
|
|||||
|
А вот так не работает
__________________
uglan |
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
Что некорректно в этом коде?!
//Выведет 2 Здесь без потери ранее записанных данных при изменении размерности массива не обойтись. Потому и не работает. Нужно определить размерность массива заранее. А вот размер каждого измерения Вы можете создавать динамически. Цитата:
В первой строке Вы создаете одномерный массив a. Во второй строке, Вы создаете второе измерение массива a В третьей строке Вы присваиваете ячеке двумерного массива значение "АGA". Пока все вроде бы корректно. В четвертой строке, Вы пытаетесь создать уже четвертое измерение минуя 3. Разумеется это невозможно. Поэтому, Вы вынуждены будете ячейку a[0][0] =="AGA" переопределить массивом создающим 3-е измерение. Разумеется "AGA" сохранено не будет. //"AGA" больше не существует!!!
__________________
Случайность, господа, это знаете ли непознанная необходимость. Последний раз редактировалось Alex_beginner; 26.06.2008 в 12:28. |
|
|||||
|
А вот так не работает:
var a:Array = []; a[0][0][0] = []; a[0][0][0] = ':Q'; trace(a[0][0][0]); А вот так var arr:Array = []; arr[0] = [] arr[0] = "1" arr[1] = "2" arr[2] = "3" arr[3] = "4" arr[0][0] = "ege" arr[0][1] = "fgh" trace(arr[0].length) Чтобы создать цикл мне нужно будет знать длину каждого уровня массива. for(i=0;i<arr.length;++i){ for(u=0;u<arr[i].length;++u){ } } ...
__________________
uglan Последний раз редактировалось alexcon314; 26.06.2008 в 13:37. |
|
|||||
|
Давайте разберем этот код подробнее для понимания проблемы.
В первой строке Вы создаете одномерный массив 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]); Хорошо в таком случае как мне задействовать каждый уровень? то есть чтобы значения хранились тут a[0] = 1 a[1] = 1 и на других уровнях a[0][0] = 2 a[0][1] = 2 a[0][2] = 2 a[1][0] = 2.1 a[1][1] = 2.2 a[1][2] = 2.1 и т.д.
__________________
uglan |
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
uglan!
Давайте разберем и этот код. Цитата:
В первой строке Вы создаете второе измерение не создав первое (ошибка). В последующих четырех строках Вы записываете значения в 4 ячейки несуществующего одномерного массива. А вот в третьей и четвертой пытаетесь присвоить значение не существующей ячейке несуществующего двумерного массива (массив arr на этот момент одномерный). Поэтому length выдает что попало (в данном случае 1). Как на самом деле должен выглядеть этот код?! Вот так: arr = [] arr[0] = "1" arr[1] = "2" arr[2] = "3" arr[3] = "4" arr[0] = []; создаем пустой массив-измерение в ячейке [0] arr[0][0] = "ege" arr[0][1] = "fgh" trace(arr[0].length) Цитата:
По аналогии можно создать любую иерархию.
__________________
Случайность, господа, это знаете ли непознанная необходимость. Последний раз редактировалось Alex_beginner; 26.06.2008 в 14:11. |
|
|||||
|
Во флеше нет трехмерных массивов.
Но можно использовать Массив массивов. Конструкция вида Лишь имитирует многомерный массив
__________________
Сам себе репортер |
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
Цитата:
Проблема здесь не в создании вложенных массивов, а в сохранности данных на каждом иерархическом уровне при их создании. Как говориться Заказчик хочет и "из ружья не выстрелить и двух зайцев убить".
__________________
Случайность, господа, это знаете ли непознанная необходимость. |
|
|||||
|
Разочарован... Не знаю как в C++ но в VB точно можно было делать массивы такого вида какой угодно длины. a[0][0][0][0]...
Значит буду использовать xml. Всем спасибо!
__________________
uglan |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:18. |
|
|
« Предыдущая тема | Следующая тема » |
|
|