Просмотр полной версии : Перлы кодогенерации
if (flash.net.getClassByAlias("foo.bar.VO") == null){
flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);}
} catch (e:Error) {
flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO); }
Естесственно, Flex.
В английском есть такое выражение: Third time - the miracle... Как-то они не до конца воплотили идею, чтоли...
gloomyBrain
08.12.2009, 03:56
Вопрос: как объяснить близким, что тебя улыбнуло, если ты читаешь программный код? =)
Я в тупике
ОК, по пунктам:
getClassByAlias - может выкинуть ошибку если класс не зарегистрирован, но тогда зачем нам в трай пихать еще и рeгистацию?
registerClassAlias - может выкинуть ошибку, но только если один из параметров равен нулю, но мы эту ошибку все равно не обработаем т.как мы повторяем ту же процедуру в кетч-блоке.
Выводы: мне очень слабо верится в вероятность зарегистрировать один и тот же класс для одного и того же алиаса дважды...
Но, даже, если такое возможно, и это баг плеера, то нам достаточно поставить только getClassByAlias в трай блок - регистрации там явно нечего делать. т.как ошибка будет только в случае, если мы еще не зарегистрировались, и в таком случае мы попадем в кетч-блок, и зарегистрируемся себе спокойно...
А вообще, если по большому счету - проверка и трай-кетч там вообще ни к чему...
wvxvw, ви таки не знали что существует специальный ресурс? :) http://govnokod.ru/actionscript3
gloomyBrain, если вас не улыбнул подобный изврат, сожалею, но я думаю вы сами склонны написать такое. вывод один - набираться опыта :)
Я там не зарегистрирован, и лень как-то...
А, и, это, для так сказать закрепления эффекта и надежности, я бы добавил еще пару строчек ;)
try
{
if (flash.net.getClassByAlias("foo.bar.VO") == null)
{
flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);
}
}
catch (e:Error)
{
flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);
}
finally
{
// Да шож такое!?
flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);
}
iflamberg
08.12.2009, 15:18
вполне достойно выкладывания на *****код
wvxvw, а можно еще так:
while(flash.net.getClassByAlias("foo.bar.VO") == null) {
try{
flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);
}catch (e:Error)
flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);
}finally{
// Да шож такое!?
flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);
}
}
gloomyBrain
08.12.2009, 21:29
gloomyBrain, если вас не улыбнул подобный изврат, сожалею
divinus, сожалею, что Вы сожалеете, но как бы улыбнуло, и не знаю с чего у Вас мысли об обратном. И *****код я писать не склонен (по крайней мере мне самому так кажется).
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.