type IFooable =
abstract Foo : int -> int
type IFooable2 =
abstract Foo : a : int -> int
type MyClass() =
interface IFooable2 with
member this.Foo(b) = 7
IFooable和IFooable2有什么区别?它们是等价的吗? 在我的例子中,它的目的是什么?何时使用?
答案 0 :(得分:4)
IFooable2命名其参数; IFooable没有。
当系统反映参数名称时,这很重要。例如,当您使用带有ServiceContractAttribute标记的接口类型的WCF时,默认情况下,WCF使用接口中的参数名称来控制出现在数据的XML投影中的名称。
这也适用于工具,例如,从C#引用此F#代码,声明每种类型的变量,并查看每种方法的intellisense工具提示。
我建议总是声明参数名称(更喜欢第二个版本)。