Scala:将Future[Option[List[User]]]转换为Future[Map[Long,User]]
Scala:将Future[Option[List[User]]]转换为Future[Map[Long,User]],scala,future,Scala,Future,User是一个案例类: case class User(id: Long, firstName: String, lastName: String) 搜索函数返回Future[Option[List[User]]]。从这个未来,我想提取一个id为键的Map[Long,User]。现在我正在使用下面的方法来提取地图,但是应该有更好的方法 def users: Future[Map[Long, User]] = { for { future <- search(...) }
User
是一个案例类:
case class User(id: Long, firstName: String, lastName: String)
搜索函数返回Future[Option[List[User]]]
。从这个未来,我想提取一个id为键的Map[Long,User]
。现在我正在使用下面的方法来提取地图,但是应该有更好的方法
def users: Future[Map[Long, User]] = {
for {
future <- search(...)
} yield for {
users <- future
} yield for {
user <- users
} yield user.id -> user
}.map(_.map(_.toMap))
def用户:未来[Map[Long,User]]={
为了{
未来我认为这应该满足您的需要:
def users: Future[Map[Long, User]] = {
search().map { searchResult =>
searchResult match {
case Some(list) => list.map { u => (u.id, u) }.toMap
case _ => Map.empty
}
}
}
这个怎么样
def users: Future[Map[Long, User]] = search().map { opt =>
val list = for {
users <- opt.toList
user <- users
} yield (user.id, user)
list.toMap
}
def users:Future[Map[Long,User]]=search().Map{opt=>
val list=for{
使用者