質問

あるグッドソリューションを表すパラメータ化されたenumに C# 3.0?いようなもの または Haxe ます。よくクラス階層を簡単enumの分野で簡単に切り替え、ん、ありがとうございまはより良いアイデア、浮かぶのでしょうか。

見存とえば以下の回答は、Haxeコード:

enum Tree {
   Node(left: Tree, right: Tree);
   Leaf(val: Int);
}
役に立ちましたか?

解決

れていない馴染みの存または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), では、 itemTnextCell<T>.

なっこうで生成の一部の匿名の種類(どのようにC#のコンパイラのない new { Name='Joe'}.
まアクセスのenum値は、宣言 itemnext このとき、もしそうだとしたら、取得結合には臨時に変数.

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。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top