我正在学习 F#,当我在 Visual Studio 中键入任何代码并在F# Interactive上运行它们时,它会向我显示类似
val foo : x:'a -> 'a
我想这意味着这foo
是一个接收x
类型参数并返回相同 x 类型的值的函数。
但这意味着什么'
?许多功能也在智能感知上显示了这样的东西。
我正在学习 F#,当我在 Visual Studio 中键入任何代码并在F# Interactive上运行它们时,它会向我显示类似
val foo : x:'a -> 'a
我想这意味着这foo
是一个接收x
类型参数并返回相同 x 类型的值的函数。
但这意味着什么'
?许多功能也在智能感知上显示了这样的东西。
单引号 ( '
) 表示该参数的类型是通用的。可以像您给出的示例一样推断它,也可以显式应用它。
有关更多信息,请参阅隐式通用构造下的此处。
'a
表示一个类型变量,换句话说,一个尚未确定的类型(也不必确定)。
请注意,这与 不同a'
,后者是一个名称为两个字符的常规变量:a和'。与 C# 等其他语言相反,单引号是 F# 变量名称中允许使用的字符,除了作为名称中的第一个字符以消除上述类型变量的歧义。