Martin Odersky mentioned称他们在点子中引入了复合和交叉点类型。在他的幻灯片上,有两张图片分别代表了新旧系统上下限的差异。
这是旧的:
这是新的:
有人可以解释upper bound
对T <: U
的实际含义吗?为什么对于当前版本的scala无限大?例如,T >: U
会有什么不同。
答案 0 :(得分:1)
如果T <: U
(即T
是U
的子类型或U
是T
的超类型),则U
是< T
和T
的strong>上限是U
的下限。
在Scala 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
,反之亦然
T with U =:= U
T & U =:= U
T | U =:= T
在Scala 2中,如果T
和U
来自不同的继承层次结构(或更确切地说,是子类型化层次结构),那么最好的说法就是
T <: Any
U <: Any
从这个意义上说,上限是无限的。