【问题标题】:How to flatten a Future in scala - "val _2flat: Future[Option[Future[List[Long]]]]如何在 Scala 中展平未来 - “val _2flat: Future[Option[Future[List[Long]]]]
【发布时间】:2015-08-13 19:38:15
【问题描述】:

我有这些数据:

val _2BeFlat: Future[Option[Future[List[Long]]]] = ...

我需要:

val flat: Future[Option[List[Long]]] = ...

有办法吗?

【问题讨论】:

    标签: scala nested future


    【解决方案1】:

    这应该可以解决问题:

    val _2BeFlat: Future[Option[Future[List[Long]]]] = _
    
    val flat: Future[Option[List[Long]]] = _2BeFlat.flatMap {
      _ match {
        case None => Future.successful(None)
        case Some(future) => future.map(Some(_))
      }
    }
    

    【讨论】:

    • 谢谢!!! (因为它看起来很简单 4 u)你能帮忙把它也转换成“val futureRes: Future[Option[Future[List[Array[Long]]]]]”到“Future[Option[List[Long]]]”
    • 只需将case Some(future) => 行替换为case Some(future) => future.map(ls => Some(ls.flatMap(_.toList)))
    • 谢谢,我去看看。
    猜你喜欢
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    相关资源
    最近更新 更多