老实说,我对此感到困惑。为什么不起作用呢?难道我没有明确地告诉你'T确实是一个View
let foo<'T when 'T :> View> (v:'T):View = v
error FS0001: This expression was expected to have type View
but here has type 'T发布于 2015-11-01 18:15:53
在许多面向对象的语言中,向上转换是隐式的;在F#中,规则略有不同。当将参数传递给对象类型上的方法时,将自动应用向上转换。但是,对于模块中的let绑定函数,除非参数类型被声明为灵活的类型,否则向上转换不是自动的。
:>操作符执行静态强制转换,这意味着转换的成功与否取决于编译时。
最起码的代码是
let foo<'T when 'T :> View> (v:'T):View = v :> _https://stackoverflow.com/questions/33465182
复制相似问题