我在这里阅读StackOverflow以及Scala的不可变Set和不可变Map中的Key是不变的其他地方。
但是以下编译并在2.10.0M5中正常运行
type MapCanvT <: Component with VistaIn
def newMapCanv: MapCanvT
val canv1 = newMapCanv
var vistas = Set[VistaIn](canv1)// Map[VistaIn, Option[CSplit]]((canv1, None))
注释掉的Map版本也可以编译并运行正常。这将是一个非常有用和重大的变化,我没有注意到任何文档。
答案 0 :(得分:4)
协方差意味着你可以这样做:
var vistas: Set[VistaIn] = Set[MapCanvT](canv1)
(你不能)
var vistas = Set[VistaIn](canv1)
推断为
var vistas = Set[VistaIn](canv1: VistaIn)
因此canv1
非常适合,因为VistaIn
是MapCanvT
的超类型。
回答您的问题:Scala 2.10.0里程碑版本still have an invariant Set。 (注意:没有稳定的链接。)