小编san*_*ose的帖子

Scala用于理解Future,List和Option

我在斯卡拉建设一个活性位点和播放框架,以及我的数据模型是这样的,我经常需要编写FutureOption,并建立FutureList/ Set以前的值以得到结果,我所需要的.

我写了一个带有假数据源的简单应用程序,你可以复制和粘贴它,它应该编译.我的问题是,在我的情况下UserContext,如何以可消耗的形式取回结果.目前,我要回来了Future[Option[Future[UserContext]]].

我想在纯Scala中这样做以更好地学习语言,所以我现在正在避开Scalaz.虽然我知道我最终应该使用它.

package futures

import scala.concurrent.{Future, ExecutionContext}

// http://www.edofic.com/posts/2014-03-07-practical-future-option.html
case class FutureO[+A](future: Future[Option[A]]) extends AnyVal {

  def flatMap[B](f: A => FutureO[B])(implicit ec: ExecutionContext): FutureO[B] = {
    FutureO {
      future.flatMap { optA =>
        optA.map { a =>
          f(a).future
        } getOrElse Future.successful(None)
      }
    }
  }

  def map[B](f: A => B)(implicit ec: ExecutionContext): FutureO[B] = {
    FutureO(future.map(_ map f))
  }
}

// ========== USAGE OF FutureO BELOW ============= …
Run Code Online (Sandbox Code Playgroud)

scala future playframework reactivemongo

3
推荐指数
1
解决办法
1109
查看次数

标签 统计

future ×1

playframework ×1

reactivemongo ×1

scala ×1