功能编程:从已更改值的现有Map中获取新Map



我有一个类似的地图

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))

但以命令式风格编写这篇文章会导致创建"vardataMap"之类的问题,尽管我想获得不可变的map。因此,我必须调用toMap才能获得相同的结果。如何在函数编程中实现相同的功能?

Scala版本:2.11

为什么不简单地使用

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

最新更新