2014-09-05 5 views
2

나는 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

HashMap (""-> 오른쪽 [Seq [String], String) (""))은 작동해야합니다. –

답변

4

일반적으로 변경 가능한 모음 (또는 var 등)을 만들 때 형식을 명시 적으로 지정하는 것이 좋습니다. 이는 변경 가능한 콜렉션이 포함 된 유형에서 불변하므로 불변 유형을 추론하는 것이 신뢰할 수 없기 때문입니다.

그래서, 당신은,

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

을 쓸 수 이것은 당신에게 올바른 유형을 제공해야합니다.

+0

오, 그래, 나는 변화하는 컬렉션의 invariantion에 대해 잊어 버렸어.) 감사합니다) – Dante

관련 문제