Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.06.2014, 13:38
ageent вне форума Посмотреть профиль Отправить личное сообщение для ageent Найти все сообщения от ageent
  № 1  
Ответить с цитированием
ageent

Регистрация: Jan 2010
Сообщений: 44
По умолчанию почему не выполняется обход по массиву?

Привет, все. Объясните плиз почему не работает такая простенькая конструкция как:

Код AS3:
		var ar:Array = new Array(5);
		for each(var index:Number in ar) {
			trace(1);
		}
почему не выполняется обход по массиву?

Спасибо.

Старый 15.06.2014, 14:00
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Обход выполняется, просто в массиве нет данных, а лишь 5 пустых, зарезервированных мест.
Если вы создаёте массив именно так new Array(5), и если в скобках находится лишь одно число, то создаётся массив длинной равной этому числу, с пустыми значениями (undefined). Вы можете это легко проверить, написав
Код AS3:
trace(ar.length)
Если бы в скобках было чисел больше чем одно, то тогда бы массив создался именно с этими двумя значениями, как и ожидалось.
Лучше создавайте через квадратные скобки, чтобы не запутаться:
Код AS3:
var ar:Array = [5];
for each(var index:Number in ar) {
	trace(1);
}

Старый 15.06.2014, 15:02
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 3  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
просто, в случае Array, for each перечисляет значения свойств.
то есть for each не отличает Array от Object, и перебирает у обоих только видимые для перебирания свойства.

Код AS3:
var ar:Vector.<Object> = new Vector.<Object>(5);
for each(var index:Object in ar) {
	trace(index); // undefined
}

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:30.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.