Показать сообщение отдельно
Старый 06.02.2013, 21:04
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 6  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Значит анонимные и вложенные функции это одно и тоже?
Угу, по-крайней мере работают с теми же проблемами и с тем же захватом контекста, что и анонимки.

Цитата:
Про то, что нужно "забыть" такой метод я уже слышал. Только у меня вопрос почему.
В C#, F#, Ocaml, Python, Java(совсем недавно) тоже есть анонимные функции(лямбды) и там это хорошо
Но:
1. В этих языках они чаще используются не чтобы обработать что-то асинхронно по месту, а чтобы лаконично завернуть функциональную обработку данных
2. В этих языках есть оптимизации лямбды (например по возможностьи несоздание второго экземпляра лямбды), либо проблемы с лямбдами меркнут на фоне общей тормознутости языка (как в Python)
3. Даже в Python запретили делать анонимки размером больше одного выражения
Потому что читабельность падает!

Почему анонимки в AS3 плохо:
- не первый раз здесь это говорю, но на одном проекте после истребления анонимок потребление памяти упало с 800 до 200 Mб. Вобщем, надо быть _очень_ аккуратным, чтобы ничего не потекло при использовании анонимок
- нет никаких оптимизаций - создаются при каждом упоминании, захватывают весь контекст, даже если не надо, не обрабатываются JIT-компилятором
- падает производительность - просто доступ к обычным переменным становиться медленнее в разы(!)
- читабельность ухудшается.


Последний раз редактировалось expl; 06.02.2013 в 21:15.