我创建了一个简单的函数:
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
问题是:会发生什么?!
答案 0 :(得分:7)
您的第一个x.Func
是定义属性,而不是方法,因为属性不能是通用的,所以必须使用'a
的具体类型。
定义x.Func y
时,您正在创建一个方法,并且可以是通用的。