![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+1 18.03.08]
Регистрация: Nov 2006
Сообщений: 223
|
У кого-нибудь есть достаточно разумное объяснение, как это работает?
С тех пор, как я впервые увидел такую конструкцию, я мучаюсь в догадках: как локальная переменная может существовать вне функции? Ну ладно бы мы просто могли испльзовать ту же самую переменную - в том же Паскале вложенные функции могут использовать локальные переменные родительской функции. Но тут ещё и сохраняется значение после завершения функции! Ведь onRelease() у нас будет выполнен уже после того, как test() закончит выполнение. Так где "сидит" это значение? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Переменная «а» внутри onRelease есть глобальная относительно onRelease, но локальная относительно test(). Значение хранится в памяти, GC не удаляет его в силу наличия ссылки на него внутри onRelease. Примерно так.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:13. |
|
|
« Предыдущая тема | Следующая тема » |
|
|