In Scala, apply function to values for some keys in immutable map

collections, scala

Solution

m.transform{ (key, value) => if (k(key)) f(value) else value }

Problem

Let an immutable map ``` val m = (0 to 3).map {x => (x,x*10) }.toMap m: scala.collection.immutable.Map[Int,Int] = Map(0 -> 0, 1 -> 10, 2 -> 20, 3 -> 30) ``` a collection of keys of interest ``` val k = Set(0,2) ``` and a function ``` def f(i:Int) = i + 1 ``` How to apply `f` onto the values in the map mapped by the keys of interest so that the resulting map would be ``` Map(0 -> 1, 1 -> 10, 2 -> 21, 3 -> 30) ```

Original source