How to modify a value of a Map which contains Sets, returning a new Map?
问题 Given a Map[Int, Set[Int]] , how can I modify a single value of the Map, generating a new one in the process, for example: val x = Map(1 -> Set(1,2,3)) x(1) + 5 // This creates a new Set, but not a new Map val y = x(1) change { x => x + 5 } // The previous functionality is what I'm looking for // z: Set[Int]] = List(Set(1, 2, 3, 5)) 回答1: In scala 2.10: implicit class ChangeableMap[K,V]( val m: Map[K,V] ) extends AnyVal { def change( k: K )( transform: V => V ): Map[K,V] = { m.get( k ).map{ v