我一直在处理稍微复杂的地图,我需要解决的最后一个问题是替换密钥为Map()
的{{1}},并将其替换为{ {1}}。
地图看起来像:
Option[Long]
我有Option[User]
的列表。我当时认为foldLeft可以做到这一点,但语法对我的业余性来说很棘手。我尝试了以下但没有成功:
(Map[ Option[Long], List[Tuple3[Job,Option[Client],Option[Project]]] ]()
下面的编译器错误表明我可能没有在正确的位置获取变量。
Option[User]
如何正确完成这项工作?
修改:已实现我还需要将第一个theMap.foldLeft(users){
(u,j) =>
if(j._1!=None) {
Map(u, j._2)
} else {
Map(User.placeholder, j._2)
}
}.flatten
键与type mismatch; found : List[Option[models.User]] required: (?, ?)
匹配。如果我搞清楚,就去更新它。
越来越近,只需切换到映射。但这有点麻烦:
Long
答案 0 :(得分:3)
如果我理解正确,那么应该这样做。
val userMap = users map {u => (u, theMap(u map {_.id})} toMap
我不确定这里有多少Option
个密钥,因为只有一个None
密钥,但是如果你需要考虑该密钥,它可能不在{{1然后你可以单独添加它。
users