Только не мой мозг...
После года Ruby от подобных сюжетов хочется рыдать в голос. Встреча с Flash (спасибо криворуким индусам - с версии 6 пользоваться им на Маке все равно что заниматься анальным онанизмом) заставляет плакать, особенно от того, как они весело вкручивают туда Java-функциональность (не пойму только зачем, кроме code complete):
public function pullXml(path:String):Boolean {
portXml = new XML();
portXml.ignoreWhite = true;
var aRef = this; /* на месте Мартина Фаулера я бы начал рыдать отсюда */
portXml.onLoad = function(status:Boolean) {
aRef._xmlCallback(status);
}
portXml.load(path);
return true;
}
Поясним пикантность сниппета.
- В загрузчике XML во Flash отсутствует синхронная загрузка. То есть вообще.
- Заметьте тонкую игру в Java с подсказками типов. При этом не забывайте, что все можно сделать просто Object и забыть об этом.
- Обратите внимание что все кривокобыльные костыли JavaScript остаются на месте - например aRef
- Поскольку это JavaScript (а никакая не Java) нельзя просто назначить callback присвоением собственного метода - это по факту копирует метод в XML-обьект.
- private или public при этом _xmlCallback - никого не волнует. Потому что это JavaScript сколько бы индусы не пытались доказать обратное.
- Угадайте, что возвращает typeof(this) во всех (совершенно всех) флешевых ООП-конструкциях? Правильно. Object. Всегда. Чтобы жизнь была интересна и полна.
- Проверка на undefined происходит только при компиляции. Потому что Javascript.
Такое вот у нас ООП. Скорее бы сдать эту дрянь. Констатирую что чудовищнее этого был только Lingo в Director. Как жаль что нету альтернативы этому кошмару.
Upd: А вот такой у них поиск по документации. Сраный Бангалор.