2008-12-01 53 views
20

AS3上我真的很喜歡AS3的一件事是它增加了多少編譯時類型檢查。但是,它似乎有點缺乏,沒有可用的類型檢查枚舉結構。什麼是在AS3中進行自定義枚舉類型的一種好的(最好/可接受的)方法?在AS3/Flash/Flex中枚舉?

回答

17
+0

很好的答案,謝謝! – HanClinto 2008-12-01 00:50:05

+0

鏈接已損壞。 – Joe 2011-02-07 01:37:13

+0

雖然我的編輯正在審查中,但我認爲這個鏈接與最初提供的鏈接類似:[Enumerations with classes](http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f2f.html) – gltovar 2011-02-07 21:19:28

1

我知道,這是一個有點過時和不完全回答你的問題,但你可能想退房haXe。您也可以使用它爲您生成as3,另外還有許多其他原因可以使用它。但是,這真的是下主題...

1

爲了一個真正枚舉它需要兩個:

  • 強制類型安全
  • 防止惡意實例

很少有簡單的解決方案,兩者都做,基那些做的類過於複雜的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"); 
     } 
    } 
} 

警告:我它設置以前見過少數情況下一個變量初始化讀取枚舉常量,但在這些情況下,這個問題同樣適用於其他基於const的枚舉仿真。