Подтвердить что ты не робот

Перечисления в AS3/Flash/Flex?

Одна вещь, которая мне очень нравится в AS3 по сравнению с AS2, - это то, насколько она добавляет больше времени для компиляции. Однако, как представляется, несколько не хватает того, что нет доступной структуры перечисления, проверенной типом. Какой хороший (лучший/общедоступный) способ делать пользовательские перечисляемые типы в AS3?

4b9b3361

Ответ 2

Просто хотел поделиться мой путь

Ответ 3

Я знаю, это немного устарело и точно не отвечает на ваш вопрос, но вы можете проверить haXe. Вы также можете использовать его для генерации as3 для вас, плюс есть много других причин для его использования. Но это действительно выходит из темы...

Ответ 4

Недавно я обнаружил, что as3commons library имеет хороший базовый вспомогательный класс Enum для выполнения перечислений.

Ответ 5

Чтобы быть перечислением true, он должен быть как для:

  • Обеспечение безопасности типа
  • Предотвратить случаи изгоев

Немногие из простых решений делают оба, и базовые классы, которые делают, являются чрезмерно сложными IMO.

Мой нынешний фаворит следующий стиль - безопасный и простой, и никого не следует путать:

public final class FruitEnum {
    private static const CREATE:Object = {};

    public static const APPLE:FruitEnum = new FruitEnum(CREATE);
    public static const ORANGE:FruitEnum = new FruitEnum(CREATE);
    public static const BANANA:FruitEnum = new FruitEnum(CREATE);

    public function FruitEnum(permission:Object) {
        if (permission !== CREATE){
            throw new Error("Enum cannot be instantiated from outside");
        }
    }
}

CAVEAT: Я видел редкие случаи, когда переменная инициализация читает enum const до ее установки, но в тех случаях проблема применяется в равной степени к другим эмуляциям enum на основе const.