Scala:不可变集合和不可变映射键是否变得协变?

Scala:不可变集合和不可变映射键是否变得协变?,scala,scala-collections,Scala,Scala Collections,我在这里和其他地方读到Scala的不可变集和不可变映射中的键是不变的 但是,以下代码在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)) 注释掉的映射版本也可以编译并运行良好。

我在这里和其他地方读到Scala的不可变集和不可变映射中的键是不变的

但是,以下代码在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))

注释掉的映射版本也可以编译并运行良好。这将是一个非常有用和重要的变化,我还没有注意到任何文档

协方差意味着您可以这样做:

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里程碑版本。注意:没有稳定的链接。

协方差意味着您可以这样做:

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里程碑版本。注意:没有稳定的链接。

我明白了,现在你来解释一下,这就更有意义了。因为那个误会,我避开了布景。虽然我仍然认为这是一个令人恼火的限制。我明白了,现在你解释一下,这更有意义。因为那个误会,我避开了布景。尽管我仍然认为这是一个令人恼火的限制。