当前位置:  开发笔记 > 编程语言 > 正文

试图理解推断的类型约束

如何解决《试图理解推断的类型约束》经验,为你挑选了0个好方法。

以下产量

此构造使代码不如类型注释所指示的那样通用.类型变量'P已被约束为类型'bool'.

对于let myValue =表达的右侧,和

此代码的通用性低于其注释所需的代码,因为显式类型变量"P"无法进行泛化.它被限制为'bool'.

对于通用<'P>Value方法:

type MyTypeA<'T> (myObject : 'T) as this =
    let myValue = this.Value "SomeBooleanProperty"

    member this.Value<'P> name = typeof<'T>.GetProperty(name, typeof<'P>).GetValue(myObject, null) :?> 'P`

但是,这编译得很好,不会产生任何警告或错误:

type MyTypeB<'T> (myObject : 'T) as this =
    member this.Value<'P> name = typeof<'T>.GetProperty(name, typeof<'P>).GetValue(myObject, null) :?> 'P

    member this.Method<'P> name = this.Value<'P> name

这里发生了什么?在第一个示例中,为什么在私有值的赋值中识别的方法,而不是合法的通用方法?

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有