首页 文章

scala和dotty的下限和上限类型

提问于
浏览
0

Martin Odersky mentioned他们在dotty中引入了复合和交集类型 . 在他的幻灯片上有两张图片,分别代表旧式和新型系统的上下界差异 .

这是旧的:

enter image description here

这是新的:

enter image description here

有人可以解释 upper bound 对于 T <: U 的意思吗?为什么它对当前版本的scala是无限的?例如 T >: U 会有什么不同 .

1 回答

  • 1

    如果 T <: U (即 TU 的子类型或 UT 的超类型),那么 U 对于 Tupper boundT 对于 Ulower bound .

    在斯卡拉2

    T with U <: T
    T with U <: U
    U with T <: T
    U with T <: U
    

    在Dotty

    T & U =:= U & T
    T | U =:= U | T
    T & U <: T
    T & U <: U
    T <: T | U
    U <: T | U
    

    如果 T <: U 那么

    T with U =:= T
    T & U =:= T
    T | U =:= U
    

    如果 T >: UU <: T ,反之亦然

    T with U =:= U
    T & U =:= U
    T | U =:= T
    

    在Scala 2中,如果 TU 来自不同的继承层次结构(或者更准确地说,是子类型层次结构)那么最好的可以说是

    T <: Any
    U <: Any
    

    在这个意义上,上限是无限的 .

相关问题