-
Notifications
You must be signed in to change notification settings - Fork 0
Enums (ru)
Enums - языковое расширение, добавляющее поддержку перечисляемых типов в ActionScript3.
Перечисляемый тип состоит из набора именованных значений. Например, перечисляемый тип Cardsuit (карточная масть), может иметь четыре значения SPADES, CLUBS, DIAMONDS, HEARTS.
##Синтаксис
Для создания декларации класса Enum Вам необходимо импортировать языковое расширение enum. После этого в контекстном меню пакета появится пункт "New->Enum class".
Синтаксис похож на декларацию класса. Константы записываются заглавными буквами через запятую (соглашение по именованию констант такое же как у обычных констант).
Также один перечисляемый тип может наследовать другой и/или реализовывать интерфейс.
public enum Cardsuit extends <none> implements <none> {
SPADES,
CLUBS,
DIAMONDS,
HEARTS
public function Cardsuit() {
// enum constructor
}
}Конструктор Enum, как и конструктор класса, может принимать аргументы. Кроме конструктора, в перечислении могут быть другие методы и поля, как в любом классе.
public enum Cardsuit extends <none> implements <none> {
SPADES(13),
CLUBS(13),
DIAMONDS(13),
HEARTS(13)
public function Cardsuit(amount : int) {
// будет вызван при создании каждого экземпляра
_amount = amount; // присвоение аргумента
}
private var _amount : int;
public function get amount ( ) : int {
// getter
return _amount;
}
}К перечислению можно обратиться из любого класса, используя имя типа, константу и, при необходимости, свойство.
public function Main() {
Cardsuit.SPADES;
Cardsuit.CLUBS.amount;
} Операция .name возвращает строку с именем значения. Она может быть использована для получения имени в методе.
public function Main() {
myGetEnum(Cardsuit.DIAMONDS);
}
public function myGetEnum(myEnum : Cardsuit) : void {
myEnum.name; // myEnum.name = "DIAMONDS"
myEnum.amount; // DIAMONDS.amount value
}Возвращает индекс значения.
trace Cardsuit.DIAMONDS.index;// 2Статическое свойство, возвращающее список всех значений.
Cardsuit.VALUES; //SPADES, CLUBS, DIAMONDS, HEARTSСтатическое свойство, возвращающее список всех костант.
Cardsuit.NAMES; // "SPADES", "CLUBS", "DIAMONDS", "HEARTS"Enums очень удобно пользоваться в блоках switch, так как в них можно использовать короткую ссылку на константы.
switch (myEnum) {
case SPADES :
break;
case CLUBS :
break;
case DIAMONDS :
break;
case HEARTS :
break;
}##Аннотации
###[CompactPresentation(name="", color="")] Данная аннотация позволяет указать сокращенное имя для константы.
public enum Cardsuit extends <none> implements <none> {
[CompactPresentation(name="SPADES")]
SPADES(13),
...
}После указания аннотации следующий записи будут эквивалентны.
myGetEnum(SPADES);
myGetEnum(Cardsuit.SPADES);