Показать сообщение отдельно
Старый 25.01.2011, 21:10
JackFromChaos вне форума Посмотреть профиль Отправить личное сообщение для JackFromChaos Найти все сообщения от JackFromChaos
  № 70  
Ответить с цитированием
JackFromChaos
 
Аватар для JackFromChaos

блогер
Регистрация: Jan 2008
Адрес: Донецк
Сообщений: 162
Записей в блоге: 2
Отправить сообщение для JackFromChaos с помощью Skype™
При вызове функция не компилируется, это точно. Возможно компилируется при в момент "создания"(тут сложно сказать, что бы знать наверняка нужна документация на байткод). Там происходит волшебное newfunction... Что за ним скрывается, я не знаю... Но это, по идее, условная компиляция... Исходников в конечной swf нет. Есть такой же байткод, который мало чем отличается от обычного метода. Разница в наличии таких операций:
getlex QName(PackageInternalNs(""), "parentVariableName")
где parentVariableName - имя переменной в родительской функции.
Конечный результат этого волшебства практически ничем не отличается от обычной функции.
Естественно, создание анонимных функций внутри цикла для какой нибудь разновидности замыкания - смерти подобно...

В c# на сколько я знаю, имен локальных переменных нет, но есть имена аргументов функций... Поэтому рефлекторный код иногда кажется вполне вменяемым Я даже пользовался математикой успешно отрефлекченой из XNA
__________________
Искренне Ваш, Джек.