我可以通过各种方式声明一种在泛型类型上运行的类型?

时间:2017-02-08 10:15:42

标签: generics syntax f#

我可以通过各种方式声明一种在泛型类型上运行的类型吗?

我看到了以下语法:

// There's a generic type called Aggregate that will be operated on by the Id type
type 'Aggregate Id = Created of 'Aggregate 

上面的语法是另一种做出以下声明的方法吗?

// The Id type operates on a generic type called 'Aggregate
type Id<'Aggregate> = Created of 'Aggregate 

我尝试引用以下documentation。但是,我没有看到替代技术的例子。

1 个答案:

答案 0 :(得分:6)

据我所知,第一个是来自OCaml / ML的语法。

就单参数泛型而言,两者都是相同的。多参数泛型,如

type 'a 'b Id = ...

不行。你必须要做

type ('a, 'b) Id = ...

我发现语法非常不幸,因为所有.NET - 接口代码和文档将始终使用C#语法

type Id<'a, 'b> = ...

VSCode / Ionide(以防您使用它们)也使用C#表示法。我个人也转而使用C#表示法来处理单个params泛型以及简单地在任何地方使用相同的符号