Syntax 语法解释(^)
好吧,很抱歉标题不好 考虑以下功能:Syntax 语法解释(^),syntax,f#,Syntax,F#,好吧,很抱歉标题不好 考虑以下功能: let inline getName arg = ( ^a : (member Name : string) arg) 我知道它是做什么的,但我知道这只是因为我复制粘贴了它 它说:给定一个arg返回arg的name成员 但是,我没有得到第一部分^a,也没有得到:(成员名称:string) 我只知道最后一个arg正在应用^a:(成员名称:string)函数的arg值。使用^指定,这意味着类型将在编译时解析,而不是在运行时解析 第二部分是指定类型必须有
let inline getName arg =
( ^a : (member Name : string) arg)
我知道它是做什么的,但我知道这只是因为我复制粘贴了它
它说:给定一个arg
返回arg
的name
成员
但是,我没有得到第一部分^a
,也没有得到:(成员名称:string)
我只知道最后一个
arg
正在应用^a:(成员名称:string)
函数的arg
值。使用^
指定,这意味着类型将在编译时解析,而不是在运行时解析
第二部分是指定类型必须有一个名为Name
且具有给定签名的成员,在本例中是字符串属性。您展示的语法是如何实际调用成员,并且编译器正在推断函数的泛型约束,但是您也可以显式指定约束,尽管没有必要
let inline getName (arg : ^a when ^a : (member Name : string)) =
( ^a : (member Name : string) arg)
需要说明的是:^a:(成员名称:字符串)
基本上是一个函数,它返回参数arg
的Name
成员?