什么" ^"意味着什么时候它在一个类型的前面?

时间:2016-01-11 13:41:39

标签: f#

" ^"是指什么时候它在一个类型前?

示例:

  

int:^ T - > INT

     

string:^ T - >串

1 个答案:

答案 0 :(得分:8)

这表示Statically Resolved Type Parameter

来自MSDN的

  

静态解析的类型参数是一个类型参数   在编译时而不是在运行时替换为实际类型。   它们前面有一个插入符号(^)。

所以它与'T非常相似,但您可以使用它来提供成员约束,编译器将在编译时解析它们(显然) - 通常您只是使用inline并且类型推断将为您解决 - 但是有一些相当高级的技巧for example FsControl)使用此(不常用)功能

例如

let inline add a b = a + b

val inline add :
  a: ^a -> b: ^b ->  ^c
    when ( ^a or  ^b) : (static member ( + ) :  ^a *  ^b ->  ^c)

将添加这样的约束以指示这将适用于所有数字类型(它将成员约束添加到静态运算符(+)