![]() |
|
||||||||||
|
|||||
|
Привет!
Столкнулся с весьма простой проблемой, но почему то не могу понять почему она происходит. Есть 2 вложенных друг в друга for, в которых я делаю trace. Вроде бы, по логике вещей трейс должен срабатывать здесь16 раз, НО, он срабатывает всего 4 раза, т.е. внешний цикл выполняется всего 1 раз. Тоже самое если сделать тройное вложение for. НО, если я буду в теле цикла переменной явно присваивать 0, т.е. var j:uint = 0 - всё работает как надо. В чём здесь подвох? Ведь uint по умолчанию всегда равен 0? |
|
|||||
|
Lorem ipsum
|
повторной инициализации j не происходит.
__________________
Поймай яблоко 2! |
|
|||||
|
т.е. внутри цикла переменная инициализируется только один раз? А при последующих обращениях к ней var в записи игнорируется?
|
|
|||||
|
Lorem ipsum
|
Иначе ты бы получал ошибку о повторном объявлении переменной. Вложенный цикл — это, видать, исключительный случай, который особо интерпретируется... и мне это не нравится — "неаккуратненько как-то"
__________________
Поймай яблоко 2! |
|
|||||
|
Действительно, в чем )
Zebestov кстати по понятиям всё раскидал, респект ему. По поводу ВСЕХ переменных ВЕЗДЕ - они переносятся в самое начало блока. Все локальные переменные объявлены в самом-самом верху метода при компиляции, все поля класса - в самом верху у класса. Поэтому j = 0, потом j = 4 и каждый раз оно 4 на следующих итерациях. Задавая явно - j присваивается к 0 на каждой итерации. Пишите явно подобные присваивания - это хороший тон и убережет Ваш от ошибок.
__________________
Тут мужик танцует и поёт про флэш Последний раз редактировалось Psycho Tiger; 22.11.2010 в 22:44. |
|
|||||
|
Понятно! Спасибо!
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|