Показать сообщение отдельно
Старый 18.09.2009, 10:41
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 7  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Последняя версия событий такова:

1. Начало цикла. i = 0
2. Проверка условия i = 5. (а не "i < 5" !)
Если дает НЕТ, то из оперативного хранилища результат предыдущих вычислений цикла (если они были) используется где-то в коде дальше (то есть у этих результатов механизм языка ставит отметку "разрешаю к использованию") и одновременно происходит переход к (3).
Если i = 5 дает ДА, то СТОП и стирание результатов предыдущего шага (если был).
3. Производятся вычисления.
4. Результат вычислений откладывается в оперативное хранилище.
5. Происходит приращение i = i + 1
6. Переход в (2)

Тогда будет именно такая картина, которую наблюдаем на практике.

1. Трейс.
Трейс происходит на этапе 3 и, вероятно, работа с окном вывода не связана с оперативным хранилищем и метка о разрешении использования результатов тут нигде не проверяется, а вывод в окно происходит сразу, вроде "стандартного вывода".

То же, видимо, и с описанием анонимной функции примера автора:

2. Назначение функции.
В процессе вычислений (этап 3) для кнопки создается функция обработки события и она становится атрибутом самой кнопки и с результатами вычислений становится никак не связана, то есть ее нельзя "отменить" или "не использовать" в зависимости от метки "разрешено к использованию"

И 5-ка будет последним значением i. Если на пальцах - то просто результат с 5-ой не используется в одних случаях (дальнейшие вычисления в коде) и используется в других (трейс и создание функций).


Последний раз редактировалось mooncar; 18.09.2009 в 11:02.