|
|
|||||
Регистрация: May 2011
Сообщений: 221
|
Перечисляемый тип на AS3
Вечер добрый, господа соратники.
Давеча загадали мне загадку: необходимо написать на AS3 перечисляемый тип. Реализовать используя классы Enumeration, IntEnumeration, UintEnumeration, StringEnumeration, которые так же полагается реализовать самостоятельно. Ну и приведены примеры использования public class UnitType extends UintEnumeration { public static const HERO:UnitType = new UnitType(1); public static const WARRIOR:UnitType = new UnitType(2); public static const MAGE:UnitType = new UnitType(3); public static const ENEMY:UnitType = new UnitType(4); public function UnitType(val:uint) { value = val; } } public class UnitUpgradeType extends StringEnumeration { public static const U1:UnitUpgradeType = new UnitUpgradeType("U1"); public static const U2:UnitUpgradeType = new UnitUpgradeType("U2"); public static const U3:UnitUpgradeType = new UnitUpgradeType("U3"); public static const U3:UnitUpgradeType = new UnitUpgradeType("U4"); public function UnitUpgradeType(val:String) { value = val; } } Я прочел некоторое количество статей по реализации этого паттерна, но в условия задачи он не уложился. А не уложился он потому, что при невозможности модифицировать класс, необходимо было реализовать метод etElementsList(enumerationClass:Class):Vector.<Enumeration> который должен был отдавать все значения перечисления. Насчет задачи вывода значений перечисления меня посетила только одна мысль: ведь любой класс, это на самом деле объект класса Class и по идее должна быть возможность просмотреть его свойства, ведь задавая статические константы мы задаем константы для объекта-класса. то есть например но, как вы все уже догадались, эта идея с треском провалилась. Так же я не вижу возможности закрыть эти классы так, чтобы из-вне невозможно было бы создавать их экземпляры, поскольку статические инициализаторы не наследуются, равно как и вложенные классы. Вобщем у меня два вопроса, в связи с моим провалом: 1) Есть ли возможность при таких условиях добраться-таки до всех значений статических констант? 2) Есть ли возможность при таких условиях закрыть классы для создания экземпляров извне? |
Часовой пояс GMT +4, время: 10:38. |
|
« Предыдущая тема | Следующая тема » |
Теги |
AS3 , enum , static |
|
|