Martin Odersky mentioned他们在dotty中引入了复合和交集类型 . 在他的幻灯片上有两张图片,分别代表旧式和新型系统的上下界差异 .
这是旧的:
这是新的:
有人可以解释 upper bound 对于 T <: U 的意思吗?为什么它对当前版本的scala是无限的?例如 T >: U 会有什么不同 .
upper bound
T <: U
T >: U
如果 T <: U (即 T 是 U 的子类型或 U 是 T 的超类型),那么 U 对于 T 是 upper bound 而 T 对于 U 是 lower bound .
T
U
在斯卡拉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 >: U 则 U <: T ,反之亦然
U <: T
T with U =:= U T & U =:= U T | U =:= T
在Scala 2中,如果 T 和 U 来自不同的继承层次结构(或者更准确地说,是子类型层次结构)那么最好的可以说是
T <: Any U <: Any
在这个意义上,上限是无限的 .
1 回答
如果
T <: U
(即T
是U
的子类型或U
是T
的超类型),那么U
对于T
是 upper bound 而T
对于U
是 lower bound .在斯卡拉2
在Dotty
如果
T <: U
那么如果
T >: U
则U <: T
,反之亦然在Scala 2中,如果
T
和U
来自不同的继承层次结构(或者更准确地说,是子类型层次结构)那么最好的可以说是在这个意义上,上限是无限的 .