少し複雑なマップでいくつかの作業を行ってきましたが、解決する必要がある最後の問題はMap()
、キーが である a を であるキーOption[Long]
に置き換えることOption[User]
です。
マップは次のようになります。
(Map[ Option[Long], List[Tuple3[Job,Option[Client],Option[Project]]] ]()
のリストがありOption[User]
ます。私は foldLeft でうまくいくと思っていましたが、私のアマチュア性には構文がトリッキーです。次のことを試しましたが、成功しませんでした:
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
キーをuser.id
. 分かり次第更新していきます。
近づいてマッピングに切り替えるだけです。しかし、これは少し面倒です:
allJobs.map{
case ((i,l)) =>
val user = users.map{ user =>
if(user.map(_.id)==i) user
}
Tuple2(user.head, l)
}