2012-07-08 3 views
4

에 나는 그것이 항목으로 채워 된 후에하는 Map[String, Set[String]] 예상하는 함수에 전달해야하는 MultiMap변경 가능한 Multimap과는 불변의지도

val ms = 
    new collection.mutable.HashMap[String, collection.mutable.Set[String]]() 
    with collection.mutable.MultiMap[String, String] 

만듭니다. 작동하지 않는 직접 ms을 전달하고, toMap

ms.toMap[String, Set[String]] 

를 통해 불변의 맵으로 변환하려고하는 것은

Cannot prove that (String, scala.collection.mutable.Set[String]) <:< (String, Set[String]). 

이 수동으로 ms 반복하고 새로운으로 모든 항목을 삽입하지 않고 해결 될 수 산출 불변의지도?

답변

5

문제가 가변적 인 것으로 보입니다. 그래서 불변 세트로 터닝 작업 :

scala> (ms map { x=> (x._1,x._2.toSet) }).toMap[String, Set[String]] 
res5: scala.collection.immutable.Map[String,Set[String]] = Map() 

또는 더 나은 다음 다니엘 소브랄의 제안에 의해 :

scala> (ms mapValues { _.toSet }).toMap[String, Set[String]] 
res7: scala.collection.immutable.Map[String,Set[String]] = Map() 
+0

아래 투표에 대한 이유는 무엇입니까? – pedrofurla

+0

downvote를하지는 않았지만 아마도 ms.mapValues ​​(_. toSet)를 쓸 수있을 때 불필요하게 자세한 내용이 표시 되었기 때문일 수도 있습니다. –

+1

나는 누가 투표를했는지, 왜 그렇게되었는지는 신경 쓰지 않습니다. 제 생각에는 자세한 답변은 질문의 요지도 아니므로 응답하지 않아야 투표의 이유가 될 수 없습니다. – pedrofurla

2

mapValues을 사용하여 Set 만 바꾸는 것은 어떻습니까?

관련 문제