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

Generics F#:函数参数在类中默认为obj,generics,f#,type-inference,Generics,F#,Type Inference,我创建了一个简单的函数: let myGenericFunc abc = printfn "%A" abc 其类型为: 'a -> unit 然后我想让它成为一个类的成员: type MyClass() = member x.Func = myGenericFunc 但是,“Func”的类型现在是 此外:如果我将参数显式化,则一切都会再次正常: type MyClass() = // Func : 'a -> unit member x.Func y =

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

let myGenericFunc abc = printfn "%A" abc
其类型为:

'a -> unit
然后我想让它成为一个类的成员:

type MyClass() =
    member x.Func = myGenericFunc
但是,“Func”的类型现在是

此外:如果我将参数显式化,则一切都会再次正常:

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

问题是:会发生什么

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

定义
x.Func y
时,您正在创建一个方法,该方法可以是泛型的

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