Это головоломка.Flex/Parsley - Внутренний класс quirk с компилируемым режимом
Релевантная окружающая среда: приложение Flex, работающая петрушка, которая строится муравьями.
классПроблема:
package com.foo.bar {
public class ProblemClass {
// constructor
public ProblemClass(enforcer:Enforcer) {}
public static function build():ProblemClass {
// Do some setup
return new ProblemClass(new Enforcer())
}
}
// internal private class
class Enforcer() {}
В другом месте, в отдельном классе (который получает определенный в контексте петрушка):
package com.foo.bar {
public class ProblemClassBuilder {
[Factory]
public function getProblem():ProblemClass {
return ProblemClass.build();
}
}
}
Вот футболист: Когда я компилирую это из муравьиной задачи с debug = "true", он отлично работает. Когда я скомпилировать его с отлаживать = "ложь", петрушка выдает ошибку при построении контекст:
Ошибка применения [объект FactoryMethodDecorator]: Error # 1065: Переменная Enforcer не определена.
Никаких других изменений кода, кроме включения или выключения отладки в задаче mxmlc ant.
Кто-нибудь видел похожие проблемы с внутренними классами & ant debug компилирует режимы?
Я смог исправить проблему (удалив внутренний класс), но не понимаю, почему это не сработало в первую очередь.
Извините, но это неверно. В actionscript нет модификатора класса private. (http://bit.ly/9hvf5h) Кроме того, вы можете объявить более одного класса в файле ActionScript, но последующие классы привязаны к области по умолчанию исходного класса - то есть, доступны только для первого класса , Добавление внутреннего выражения в это объявление класса не имеет никакого эффекта. Это общий шаблон для реализации Singleton/Private classes в AS. –