*ActionScript *идиотизм *странностивот мне интересно как так устроенно AS3 API, что оно так странно работает? :)
простейший ( и при этом широко известный ) пример:
while ( numChildren ) {
removeChildAt( 0 );
}
этот код работает быстрее чем:
var i:int = numChildren;
while ( --i ) {
removeChildAt( i );
}
парадокс. казалось бы удаление последнего элемента массива должно занимать меньше времени чем первого, да и обращение к локальной переменной должно быть шустрее, чем к свойству объекта. ан-нет! нефига. устройство данной конструкции остаётся загадкой.
но при этом у нас есть 2 метода:
getDefinitionByName
getClassByAlias
объясните мне идиоту, почему приходится писать обёртки для этих методов? что в них такого страшного происходит, что приходится делать локальные хэши?
в результате через такой метод всё работает в N раз быстрее.
function get(name:String):Object {
var result:Object = _hash[ name ];
if ( !result ) {
_hash[ name ] = result = getDefinitionByName( name );
}
return result;
}
в чём ваще проблема сделать это на нативном уровне?
почему эти методы кидают исключение а не возвращают null? и как мне избегать исключения, если у меня нету метода hasDefinition, hasClassAlias?
точнее с дефинишем я, конечно, вру слегка. проверить можно так:
ApplicationDomain.currentDomain.hasDefinition
но если так проверять, то проще запросить тогда
ApplicationDomain.currentDomain.getDefinition
ведь последний метод возвращает null как и положено =)
p.s.: я не любитель try..catch, и всегда стараюсь избегать их используя if..else, если есть такая возможность.
#662880
from Talk.v105643D9C33, 21 month ago