scala - 函数式编程:从现有 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))
但是以命令式风格写这个会导致像创建“var dataMap”这样的问题,尽管我想获得不可变的地图。因此,我必须调用toMap才能得到相同的结果。如何在函数式编程中实现相同的目标?
斯卡拉版本:2.11
解决方案
为什么不简单地使用,
val dataMapToUse = strMap.map{case(k,v) =>(k -> Data(v))}
推荐阅读
- python - 是否有显示 python 导入选项的 sublime 插件?
- firebase-realtime-database - firebase 实时数据库规则,允许用户访问另一个用户数据
- powershell - Powershell 获取 Get-Measure 属性值
- asp.net - 未加载自定义 appsettings.json
- mysql - 如何将 python mysql.connector 包含到 AWS Chalice 部署中?
- powershell - Register-PsRepository:在此对象上找不到属性“名称”
- java - Servlet 单元测试
- ssl - 远程证书签名
- ios - DJI 开发者,将视频保存在我的 iOS 应用中
- iteration - 迭代 OrientRecord 对象