Scala地图转换

Von*_*onn 7 scala map

我很害怕Scala新手:我正在尝试根据一些简单的逻辑将Map转换为新的Map:

val postVals = Map("test" -> "testing1", "test2" -> "testing2", "test3" -> "testing3")
Run Code Online (Sandbox Code Playgroud)

我想测试值"testing1"并更改值(创建新Map时)

def modMap(postVals: Map[String, String]): Map[String, String] = {
  postVals foreach {case(k, v) => if(v=="testing1") postVals.update(k, "new value")}
}
Run Code Online (Sandbox Code Playgroud)

Arj*_*ijl 8

您可以使用'map'方法.通过将给定函数应用于它的所有元素,返回一个新集合:


scala> def modMap(postVals: Map[String, String]): Map[String, String] = {
   postVals map {case(k, v) => if(v == "a") (k -> "other value") else (k ->v)}
}

scala> val m = Map[String, String]("1" -> "a", "2" -> "b")
m: scala.collection.immutable.Map[String,String] = Map((1,a), (2,b))

scala> modMap(m)
res1: Map[String,String] = Map((1,other value), (2,b))

Run Code Online (Sandbox Code Playgroud)

  • 非常感谢...我试图让我的大脑在功能上思考.慢慢但肯定...... (2认同)