generics - 我可以通过哪些不同的方式来声明对泛型类型进行操作的类型?

标签 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 .但是,我没有看到替代技术的示例。

最佳答案

据我所知,第一个是从 OCaml/ML 中提取的语法。

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

type 'a 'b Id = ...

不工作。你将不得不做

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

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

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

VSCode/Ionide(以防万一您使用它们)也使用 C# 表示法。我个人也为单参数泛型切换到 C# 表示法,只是为了在所有地方都使用相同的表示法

关于generics - 我可以通过哪些不同的方式来声明对泛型类型进行操作的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42110281/

相关文章:

java - 取消选中返回类类型的转换

Scala 泛型的模式匹配

syntax - 为什么将表达式的第一行与 let 放在同一行无法编译?

f# - F# 中的类型提供程序和静态参数

F#:如何仅在 Deedle 数据框的某些特定列上运行 fillMissing

c# - 迁移到 .NET8 后,F# 查询表达式和带有 Array.Contains 的 C# LINQ 失败

java - CDI:手动获取用泛型声明的类的 bean 实例

generics - Dart:每个子类都有不同的静态方法

Java语法: switch case as variable?

syntax - 'order' 附近的语法不正确。运行总计。 SQL Server 2012