【发布时间】:2014-02-17 08:52:22
【问题描述】:
我有:
- 输入集:
Set[X]和 - 函数:
(X) => Future[Y]
在set上运行函数,我想输出一个:
Future[Map[X, Y]]
我的 Scala 大脑日很慢。请帮我想出上面的转换。谢谢。
【问题讨论】:
标签: scala future scala-collections scala-2.10
我有:
Set[X] 和(X) => Future[Y]
在set上运行函数,我想输出一个:
Future[Map[X, Y]]我的 Scala 大脑日很慢。请帮我想出上面的转换。谢谢。
【问题讨论】:
标签: scala future scala-collections scala-2.10
关键是Future.traverse。作为第一步,您可以编写以下内容:
def toSet[A, B](keys: Set[A], computeValue: A => Future[B]) =
Future.traverse(keys)(computeValue)
但这会返回一个Future[Set[B]],这并不是您想要的。因此,您添加键并在最后转换为地图:
def toMap[A, B](keys: Set[A], computeValue: A => Future[B]): Future[Map[A, B]] =
Future.traverse(keys)(k => computeValue(k).map(k -> _)).map(_.toMap)
你已经完成了。
【讨论】: