最近我遇到了类似的代码清单:
type MyType =
| MyType of int
and internal MyInternal =
| One of MyType
| Two of MyType
我不熟悉'和内部'的用法(在第三行),我想知道使用'type internal'之间是否有任何区别:
type MyType =
| MyType of int
type internal MyInternal =
| One of MyType
| Two of MyType
我已经对这两种形式进行了简单的实验,但我看不出有什么区别。这只是两种不同的方式来写同样的东西吗?
答案 0 :(得分:5)
在这种情况下,and
关键字将用于定义mutally recursive types MyType
和MyInternal
。由于MyType
和MyInternal
不是相互递归的,因此不需要and
。
正如MSDN页面所述:
除了第一个关键字外,所有关键字都替换了type关键字 定义
所以定义是等价的。
答案 1 :(得分:3)
不,您建议的代码肯定更具惯用性。
type T = ...
and U = ...
通常仅在类型相互递归时使用。使用内部类型会更奇怪,因为第一种类型的构造函数也需要内部构造:
type T = internal | T of U
and internal U = | U of T