次のコード:
var m: Map[String, Int] = Map("A" -> 1, "BB" -> 2, "CCC" -> 3)
m = m filterKeys { s => s.length < 3 }
コンパイルしません。次のエラーが表示されます。
エラー: 型の不一致
が見つかりました: collection.this.Map.Projection[scala.this.Predef.String,scala.this.Int]
が必要です: collection.this.Map[scala.this.Predef.String,scala.this.Int]
m = m filterKeys { s => s.length < 3 }
scaladoc a Projection[A,B]
extends the traitによると、私はこれを本当に理解していませんMap[A,B+]
。つまり、 Projection は Mapです。
反変型と関係があるのではないかと思いましたが、代わりにB
を使用すると、まだコンパイルされません。私は何が欠けていますか?解決策は次のとおりです。Any
Int
var m: Map[String, Int] = Map("A" -> 1, "BB" -> 2, "CCC" -> 3)
m = Map(m filterKeys { s => s.length < 3 } toSeq : _ *)
しかし、これは私にはエレガントではないようです。