2009年6月4日木曜日

列挙型がないAS3で列挙を使う


「ActionScript 3.0 は、C++ の enum キーワードや Java の Enumeration インターフェイスとは異なり、特定の列挙機能をサポートしません」

と書いてある。さらに、代替手段も記載されている。

一つ目の方法は「staticなパブリック定数(String型かint型かuint型)を定義する」というもの。

Flex3のイベント名が類似品だろう。
この方法だと、定義していない列挙をうっかり使ってしまったり、既に定義してある列挙値と同じ列挙値をうっかり違うものと思い込んで使ったりしてしまうという心配がある。

二つ目の方法は「staticなパブリック定数にクラスのインスタンスを入れる」というもの。

これを使ったコードはまだ見たことがなかったし、考えもしなかったのでなるほどと思った。
この方法だと、値のセットを任意の新しい型として作ることができる。
それでも、任意の列挙値を後から作れてしまう。
C++だとコンストラクタをprivateにしてインスタンスを作れないようにもできるのだが・・・。
day
public final class Day {
public static const MONDAY:Day = new Day();
public static const TUESDAY:Day = new Day();
...
}
nasty day
public final class NastyDay {
public static const GALACTICDAY:Day = new Day();
}

0 件のコメント:

コメントを投稿