Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вложенные и анонимные функции. (http://www.flasher.ru/forum/showthread.php?t=150437)

terbooter 11.02.2011 19:59

Вложенные и анонимные функции.
 
Хочу разобраться как работает GC с вложенными и анонимными функциями.
Например, вот в этот листинг http://pastie.org/780300 демонстрирует, как анонимная функция просто подвисает в памяти.
Вообще, удаляются ли анонимные функции из памяти?
А вложенные?

zuxul 11.02.2011 23:08

Этот пример не демонстрирует того, что функция "подвисает в памяти".
GC съест их по-любому, если не останется ни одной ссылки на эти функции (хочется верить в GC).
В этом примере показывается, что при создании функции, в которой используются локальные переменные текущей области видимости (даже не текущей, а той области видимости, из которой потом не должно быть видно этих переменных), локальные переменные становятся как бы глобальными переменными для этой функции - сумбурно описал, еще это называется "замыкание". Замыкание нередко используется в языка программирования JavaScript, perl... в ActioScript из-за "кривой" реализации "замыканиев", везде советуют не пользоваться данным методом.

Psycho Tiger 11.02.2011 23:32

terbooter, а сам проверял? Попробуй, может они уничтожаться как локальные переменные.

TanaTiX 12.02.2011 00:03

Я конечно понимаю, что истина дороже, но дались вам эти анонимные функции? Во ФД Ctrl+Shift+1 и нет проблем. Лучше читаемость кода, лучше масштабируемость, лучше типизация. ЗАЧЕМ?

dimarik 12.02.2011 00:09

А разве Блуд не рассказывал про анонимные функции? Кто-то еще не понял?

КорДум 12.02.2011 00:15

А разве в поиске мало тех тем, где люди спрашивают про анонимные функции?

Psycho Tiger 12.02.2011 00:44

Цитата:

Сообщение от dimarik (Сообщение 972688)
А разве Блуд не рассказывал про анонимные функции? Кто-то еще не понял?

Если не ошибаюсь, Блуд рассказывал про замыкания в обработчиках.
Я давно хочу изучить вопрос об анонимных функциях как параметр, например, в Array#filter, т.к. для тестов пользуюсь. Достаточно удобно, будет здорово, если безболезненно такое можно пускать в продакшн.

dimarik 12.02.2011 01:12

Цитата:

Сообщение от Psycho Tiger (Сообщение 972698)
Если не ошибаюсь, Блуд рассказывал про замыкания в обработчиках.

Можно было более высокопарно "лямбда-замыкания", чего постеснялся? В чем тут неразбериха? Молоко стало вкуснее и шИколаднее, из-за того, что корова стала альпийской?

Котяра 12.02.2011 05:13

Пришлось разбирать код на javaScript..
ребята - это упитанный пушистый белый, но не заяц.
ненавижу js и php - это хуже чем код в кадрах.
PS. А анонимные функции - зло, как и php c js

Мне нужно было отловить событие window.onLoad и добавить свои обработчики. короче - я сделал свою реализацию событий, потом её применил.. в итоге - смотрите в подписи

terbooter 12.02.2011 08:15

Согласен, анонимные функции зло злейшее. (JS - да, тоже не люблю, но ПХП не так уж плох)
Термин замыкание избегаю сознательно, чтобы не вводить путаницу.

Просто сейчас я работаю в большом проекте и у меня нет выбора, кроме как полностью разобраться с замыканиями.


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

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