を表すパラメータ化されたenumクライアントまで、フルのC#?
解決
れていない馴染みの存またはHaxeっていなかった巧みな理解は十分に説明を行ったと見る Haxe enum書 の列挙型のパラメータ'のビット下のように関連する。
私の理解に基づいて
"通常'enumとは、基本的には価値が制限されるものと定義されたenum定義で設定します。C#例:
enum Color{ Red, Green, Yellow, Blue };
Color c = Color.Red;
c
ができます Red
, Green
, Yellow
, や Blue
, のものです。
にHaxeを追加することができます複雑種類のenums,逆に、例えばそのページ:
enum Cell<T>{
empty;
cons( item : T, next : Cell<T> )
}
Cell<int> c = <I don't know>;
この が表示され を意味するのであること c
に限られているリテラル値 empty
(当社の昔ながらのC#enums)することもできる複合型 cons(item, next)
, では、 item
は T
や next
は Cell<T>
.
なっこうで生成の一部の匿名の種類(どのようにC#のコンパイラのない new { Name='Joe'}
.
まアクセスのenum値は、宣言 item
や next
このとき、もしそうだとしたら、取得結合には臨時に変数.
Haxe例-ご覧の'next'として利用されている臨時局所変数の引データの匿名の連結構造
switch( c ) {
case empty : 0;
case cons(item,next): 1 + cell_length(next);
}
正直、これを吹き飛ば私がI'をクリック'を何でもやってます。そうでは非常に強力で、いまま出入り可能ですが見るのは同様にC#.
C#enumsとほとんど同じであるC/++enumsからいただくことがコピーされます。では基本的にはもう #define Red 1
そのコンパイラでは、比較内容の整数ではなく文字列のときは通過 Color
オブジェです。
私の刺しではこのC#ソースコード使うジェネリック医薬品およびインタフェースのようなこと:
public interface ICell<T> {
T Item{ get; set; }
ICell<T>{ get; set; }
}
class Cons<T> : ICell<T> {
public T Item{ get; set; } /* C#3 auto-backed property */
public Cell<T> Next{ get; set; }
}
class EmptyCell<T> : ICell<T>{
public T Item{ get{ return default(T); set{ /* do nothing */ }; }
public ICell<T> Next{ get{ return null }; set{ /* do nothing */; }
}
にしき List<ICell<T>>
る事項は、次の細胞として始めたから新築したの挿入 EmptyCell
の末尾だけに Next
参照明示的にnullに設定).にすることが EmptyCell
を含まないメンバ変数にするのではなく、必ず保管スペースなどの empty
にHaxe常に Cons
セルするパラメータである。
コンパイラの場合もインライン/最適化の方法 EmptyCell
かれているというものがある速度の増加にとも Cons
で会員データセットをnullにします。
書かないことにしました.さん大歓迎です、その他のソリューションしてしまった自慢のワン:-)
他のヒント
を使用 クラス その静的特性を表す列挙値です。できるオプションで、使用、民間のコンストラクタを参照はすべてのクラスにより静的な物件です。
の System.Drawing.Color
クラスです。これらのアプローチ.
C#(ます。NETフレームワーク全般の調査を実施しているのは、同じか)に対応しておりませんparametrized enumsのようなJavaます。しているようですが見たいと思います。一部の機能をJavaのメソッドenumsできるのはやや可じます。
何が悪いだけでクラスを利用してす。その美しくはないけれども、私がどのようにJavaの人が送っていました言語統合型のEnum。