【问题标题】:Scala: I have a Set[X] and function (X) => Future[Y] and want to output a Future[Map[X, Y]]Scala:我有一个 Set[X] 和函数 (X) => Future[Y] 并且想要输出一个 Future[Map[X, Y]]
【发布时间】:2014-02-17 08:52:22
【问题描述】:

我有:

  • 输入集:Set[X]
  • 函数:(X) => Future[Y]

在set上运行函数,我想输出一个:

  • Future[Map[X, Y]]

我的 Scala 大脑日很慢。请帮我想出上面的转换。谢谢。

【问题讨论】:

    标签: scala future scala-collections scala-2.10


    【解决方案1】:

    关键是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)
    

    你已经完成了。

    【讨论】:

    • 太棒了,感谢您提供如此迅速而彻底的帮助!
    猜你喜欢
    • 2019-12-13
    • 2011-04-18
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多