使用Cats结合不同类型的期货

时间:2017-07-13 13:03:17

标签: scala scala-cats

我有不同类型的期货。

import cats.Cartesian
import cats.instances.future._
import cats.syntax.cartesian._
import scala.concurrent.Future
import cats.implicits._

val aF : Future[Either[X, Y]] = getFuture(...)
val bF : Future[Either[X, Y]] = getFuture(...)
val cF = Future[List[Long]] = getFuture2(...)

val combinedFuture = Cartesian.tuple3(aF, bF, cF)
combinedFuture match {case (a, b, c) => 
   ...
}

但是我收到了错误

Error:(36, 44) could not find implicit value for parameter cartesian: cats.Cartesian[scala.concurrent.Future]
      val combinedFuture = Cartesian.tuple3(aF, bF, cF)

但是你可以看到我导入了所有的implicits,intances.future._和语法。

我在Scala 2.11.8上使用Cats 0.9.0

1 个答案:

答案 0 :(得分:4)

您错过了隐含的ExecutionContext

import scala.concurrent.ExecutionContext.Implicits.global

我在Future[T]上使用类型类模式时多次发生这种情况,它始终是执行上下文,很容易被遗忘,但会使类型类无法正确解析implicits。

相关问题