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