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

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

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

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
По умолчанию Вложенный for и uint

Привет!
Столкнулся с весьма простой проблемой, но почему то не могу понять почему она происходит. Есть 2 вложенных друг в друга for, в которых я делаю trace.

Код AS3:
var a:uint;
 
 
function traceMe():void
{
	for(var i:uint; i<4;i++)
	{
		 for(var j:uint;j<4;j++)
		 {
			trace(j);
		 }
	}
}
 
traceMe();
Вроде бы, по логике вещей трейс должен срабатывать здесь16 раз, НО, он срабатывает всего 4 раза, т.е. внешний цикл выполняется всего 1 раз. Тоже самое если сделать тройное вложение for. НО, если я буду в теле цикла переменной явно присваивать 0, т.е. var j:uint = 0 - всё работает как надо. В чём здесь подвох? Ведь uint по умолчанию всегда равен 0?

Старый 22.11.2010, 22:14
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
я могу ошибаться, но может все-таки flash не делает j=0 после первого прохода.
повторной инициализации j не происходит.
__________________
Поймай яблоко 2!

Старый 22.11.2010, 22:18
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 3  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
т.е. внутри цикла переменная инициализируется только один раз? А при последующих обращениях к ней var в записи игнорируется?

Старый 22.11.2010, 22:28
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 4  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Иначе ты бы получал ошибку о повторном объявлении переменной. Вложенный цикл — это, видать, исключительный случай, который особо интерпретируется... и мне это не нравится — "неаккуратненько как-то"
__________________
Поймай яблоко 2!

Старый 22.11.2010, 22:41
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Действительно, в чем )

Zebestov кстати по понятиям всё раскидал, респект ему.

По поводу ВСЕХ переменных ВЕЗДЕ - они переносятся в самое начало блока. Все локальные переменные объявлены в самом-самом верху метода при компиляции, все поля класса - в самом верху у класса. Поэтому j = 0, потом j = 4 и каждый раз оно 4 на следующих итерациях. Задавая явно - j присваивается к 0 на каждой итерации. Пишите явно подобные присваивания - это хороший тон и убережет Ваш от ошибок.


Последний раз редактировалось Psycho Tiger; 22.11.2010 в 22:44.
Старый 22.11.2010, 23:11
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 6  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Понятно! Спасибо!

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

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

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


 


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


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