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