功能编程:从现有地图中获取具有更改值的新地图

时间:2018-12-13 09:50:13

标签: scala functional-programming

我有一张地图,

val strMap = Map[String, String]("a" -> "a1", "b" -> "b1") // Map(a -> a1, b -> b1)

,我想基于strMap中的值创建另一个具有相同键但值不同的地图。例如

case class Data(data: String) {}
var dataMap = scala.collection.mutable.Map[String, Data]()
strMap.foreach (keyVal => {dataMap(keyVal._1) = Data(keyVal._2)})
val dataMapToUse = dataMap.toMap // Map(a -> Data(a1), b -> Data(b1))

但是以命令式的方式编写此命令会引起诸如创建“ var dataMap”的问题,尽管我想获取不可变的映射。因此,我必须调用 toMap 来获得相同的结果。 如何在函数式编程中实现相同的目标?

Scala版本:2.11

1 个答案:

答案 0 :(得分:7)

为什么不简单使用

val dataMapToUse = strMap.map{case(k,v) =>(k -> Data(v))}