代码之家  ›  专栏  ›  技术社区  ›  HanClinto

以as3/flash/flex表示的枚举数?[关闭]

  •  20
  • HanClinto  · 技术社区  · 16 年前

    对于AS3和AS2,我真正喜欢的一点是它添加了多少编译时类型检查。但是,似乎缺少可用的类型检查枚举结构。在AS3中进行自定义枚举类型的好方法(最佳/可接受)是什么?

    5 回复  |  直到 12 年前
        1
  •  17
  •   gltovar    13 年前

    跳跃后的答案是:—)

    Enumerations with classes

        2
  •  16
  •   LiraNuna    16 年前

    只是想分享 my way

        3
  •  1
  •   sth Alien    15 年前

    我知道,这有点过时,不完全回答你的问题,但你可能想看看 haXe . 您还可以使用它为您生成AS3,另外还有许多其他的原因可以使用它。但这真的是离题了…

        4
  •  1
  •   d9k    12 年前

    我最近发现 as3commons library 有一个好的基本助手类 Enum 表示枚举。

        5
  •  1
  •   Joachim Lous    12 年前

    为了成为一个 枚举它需要同时满足以下两个条件:

    • 强制类型安全
    • 防止流氓实例

    很少有简单的解决方案能同时做到这一点,而那些能够做到这一点的基类在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");
            }
        }
    }
    

    警告:我见过一些罕见的情况,变量初始化读取枚举常量。 之前 它设置了,但在这些情况下,问题同样适用于其他基于常量的枚举模拟。