考虑以下几点:类型和功能
type T() =
member x.y = 4
let a =
let fn() (k: T) =()
fn()
let b =
let fn() (k: System.IO.Directory) =()
fn()
a
而b
是确定的失败。错误消息是:
当'_a:> T或者将参数设置为'a'时,值'a'已被推断为泛型类型val a:('_a - > unit)如果你不打算这是通用的,添加一个类型注释
为什么以及如何解决这个问题?
但是,向定义中添加'x'会将'a'从函数值更改为函数,这意味着它不会在启动过程中进行评估。有关完整的解释,请参见[F#值,函数和一点点](http://blog.wezeku.com/2010/08/01/values-functions-and-a-bit-of-both)。 – 2012-02-03 14:07:19