2

ここで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 バージョンもコンパイルして正常に実行されます。これは非常に便利で重要な変更であり、私はドキュメントに気づいていません。

4

1 に答える 1

4

共分散とは、次のことができることを意味します。

var vistas: Set[VistaIn] = Set[MapCanvT](canv1)

(あなたはできません)

var vistas = Set[VistaIn](canv1)

と推測される

var vistas = Set[VistaIn](canv1: VistaIn)

のスーパータイプであるため、適切にcanv1適合します。VistaInMapCanvT


あなたの質問に答えるには: Scala 2.10.0 マイルストーン リリースには、まだ不変の Set があります。(注意: 安定したリンクはありません。)

于 2012-08-21T22:15:48.337 に答える