2013-06-10 21 views
6

は最近、私はそうのようなコードリストに出くわした:宣言内部のタイプは

type MyType = 
    | MyType of int 

and internal MyInternal = 
    | One of MyType 
    | Two of MyType 

私はの使い方に慣れていないです「と内部」(3行目)とがあった場合、私は思っていましたこのように「内部型」を使用しての間に違いは:

type MyType = 
    | MyType of int 

type internal MyInternal = 
    | One of MyType 
    | Two of MyType 

私は簡単に両方の形で実験してきた、と私は違いを見ることはできません。これは同じことを書くには2つの異なる方法ですか?

答えて

5

andキーワードはmutally recursive typesMyTypeMyInternalを定義するために使用されるだろう。 MyTypeMyInternalは相互に再帰的ではないので、andは必要ありません。 MSDNのページ状態として

とキーワードはそう定義は等価である最初の 定義

以外のすべてにtypeキーワードを置き換えます。

3

いいえ、あなたの推奨コードは間違いなくもっと慣用的です。

type T = ... 
and U = ... 

は、通常、型が相互に再帰的である場合にのみ使用されます。内部型とそれを使用して第一のタイプのコンストラクタは、内部なされる必要があるだろうから、さらに奇妙なことになります。この場合

type T = internal | T of U 
and internal U = | U of T 
関連する問題