我需要一个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(""))
我该如何定义呢?
答案 0 :(得分:4)
通常,在制作可变集合(或var
或任何可变的集合)时,最好在其创建中明确指定类型。这是因为可变集合在包含的类型中是不变的,并且推断不变类型是不可靠的。
所以,你可以写,
val map = mutable.HashMap[String,Either[Seq[String],String]]("" -> Right(""))
这应该给你正确的类型。