F#:函数参数默认为类中的obj

时间:2014-12-10 10:51:40

标签: generics f# type-inference

我创建了一个简单的函数:

let myGenericFunc abc = printfn "%A" abc

其类型是:

'a -> unit

然后我想让它成为一个类的成员:

type MyClass() =
    member x.Func = myGenericFunc

然而," Func"的类型现在是

obj -> unit

此外:如果我将参数设为显式,那么一切都可以了:

type MyClass() =
    // Func : 'a -> unit
    member x.Func y = myGenericFunc y

问题是:会发生什么?!

1 个答案:

答案 0 :(得分:7)

您的第一个x.Func是定义属性,而不是方法,因为属性不能是通用的,所以必须使用'a的具体类型。

定义x.Func y时,您正在创建一个方法,并且可以是通用的。