在Scala中,将函数应用于不可变映射中某些键的值

elm*_*elm 4 collections scala

让一个不可变的地图

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)
Run Code Online (Sandbox Code Playgroud)

一系列感兴趣的钥匙

val k = Set(0,2)
Run Code Online (Sandbox Code Playgroud)

和一个功能

def f(i:Int) = i + 1
Run Code Online (Sandbox Code Playgroud)

如何应用于f感兴趣的键映射的映射中的值,以便生成映射

Map(0 -> 1, 1 -> 10, 2 -> 21, 3 -> 30)
Run Code Online (Sandbox Code Playgroud)

Rég*_*les 6

m.transform{ (key, value) => if (k(key)) f(value) else value }
Run Code Online (Sandbox Code Playgroud)