两个简单的F#问题

两个简单的F#问题,f#,F#,有两个F#的片段我想理解,但不知道用谷歌搜索什么。第一: let ``1+2`` () = .... 我猜这只是指“将表达式转换为标识符”?但是,如果我想引用它,该特性叫什么 第二,当字符出现在类型中时,^是什么意思?我发现有几处提到过它,但解释总是说“类型就是这个”,而不是“它与没有1^1的类型的区别在于……”。例如: let inline blah x y = x+y;; val inline blah : ^a -> ^b -> ^c when ( ^a

有两个F#的片段我想理解,但不知道用谷歌搜索什么。第一:

let ``1+2`` () = .... 
我猜这只是指“将表达式转换为标识符”?但是,如果我想引用它,该特性叫什么

第二,当字符出现在类型中时,
^
是什么意思?我发现有几处提到过它,但解释总是说“类型就是这个”,而不是“它与没有1^1的类型的区别在于……”。例如:

let inline blah x y = x+y;;
val inline blah :
   ^a ->  ^b ->  ^c
    when ( ^a or  ^b) : (static member ( + ) :  ^a *  ^b ->  ^c)

非常感谢。

反引号语法实际上只是将任意字符“引用”到标识符中的一种方法,我不确定它是否有名称。它通常用于例如

let ``This Identifier Contains Spaces`` = 42

克拉表示静态解析的类型参数:

用于特殊重载/泛型

  • 我可能会称之为“引用标识符”
  • “静态解析类型参数”
  • foo.``member``(42)  // 'member' is an F# keyword, but maybe it was the name of some 
                        // method from C# code you're using, so here's a way to call it