2013-06-10 21 views
6

Son zamanlarda şöyle listeleyen bir kod rastladım:bildirme iç tipleri

type MyType = 
    | MyType of int 

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

Ben kullanımı ile aşina değilim 've iç' (üçüncü satırda) ve orada acaba böyle 'iç türü' kullanmak arasındaki fark:

type MyType = 
    | MyType of int 

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

kısaca her iki formları ile denemişlerdir ve ben bir fark göremiyorum. Aynı şeyi yazmanın iki farklı yolu var mı?

cevap

5

, and kelime mutally recursive typesMyType ve MyInternal tanımlamak için kullanılacak . MyType ve MyInternal karşılıklı olarak özyinelemediğinden, and gerekli değildir. MSDN sayfa devletler olarak

:

ve anahtar kelime

böylece tanımları eşdeğerdir ilk tanımı dışındaki tüm üzerinde tip anahtar sözcüğü yerine geçer.

3

Hayır, önerilen kod kesinlikle daha deyimsel. türleri karşılıklı yinelemeli ise

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

tipik olarak sadece kullanılır. İlk tipteki kurucular aynı zamanda iç yapılması gerekmektedir olacağından bir iç türüyle kullanarak, daha da garip olur: Bu durumda

type T = internal | T of U 
and internal U = | U of T