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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
20
0
26 107
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

ваш ответ после прыжка :-)

Перечисления с классами

пока моя правка находится на рассмотрении, я думаю, что эта ссылка будет похожа на ту, что была изначально предоставлена: Перечисления с классами

gltovar 08.02.2011 00:19

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

Немного многословно, но мне это нравится.

Rytmis 18.02.2009 14:01

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

Круто, спасибо за предложение!

HanClinto 29.09.2009 20:46

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

Чтобы быть перечислением правда, необходимо:

  • Обеспечить безопасность типов
  • Предотвращение мошенничества

Немногие из простых решений делают и то, и другое, а базовые классы, которые делают, слишком сложны 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");
        }
    }
}

ПРЕДОСТЕРЕЖЕНИЕ: я видел редкие случаи, когда инициализация переменной считывала установленное enum const до, но в этих случаях проблема применялась в равной степени к другим эмуляциям перечислений на основе констант.

Другие вопросы по теме