斯卡拉地图与任何一个

时间:2014-09-05 21:27:03

标签: scala scala-collections

我需要一个Map[String, Either[Seq[String], String]]它应该是可变的(是的,我知道不好的做法,但我还在学习)。所以,当我尝试像这样定义它时:

 val map: Map[String, Either[Seq[String], String]] = mutable.HashMap("" -> Right(""))

我收到错误

type mismatch;
[error]  found   : scala.collection.mutable.HashMap[String,scala.util.Right[Nothing,String]]
[error]  required: Map[String,Either[Seq[String],String]]
[error]   val map:Map[String,Either[Seq[String],String]] = mutable.HashMap("" -> Right(""))

我该如何定义呢?

1 个答案:

答案 0 :(得分:4)

通常,在制作可变集合(或var或任何可变的集合)时,最好在其创建中明确指定类型。这是因为可变集合在包含的类型中是不变的,并且推断不变类型是不可靠的。

所以,你可以写,

val map = mutable.HashMap[String,Either[Seq[String],String]]("" -> Right(""))

这应该给你正确的类型。