我正在尝试使用指定的Future[List[Int]]
从List[Future[Int]]
创建ExecutionContext
。但是,我收到类型为CanBuildFrom
的第二个隐式参数cbf的错误。我不完全理解CanBuildFrom
参数的用途,当我尝试省略它时,我遇到错误,如下所示:
- not enough arguments for method sequence: (implicit cbf: scala.collection.generic.CanBuildFrom[List[scala.concurrent.Future[Int]],Int,List[Int]]
有人可以解释一下,并建议一个解决方案吗?这是我当前的测试代码,它遇到上述编译错误:
val my: List[Future[Int]] = Future.successful(1) :: Future.successful(2) :: Future.successful(3) :: Nil
val zz: Future[List[Int]] = Future.sequence(my)(ec)
答案 0 :(得分:11)
Future.sequence
需要CanBuildFrom
在其返回的Future
内构建集合。标准库中的许多其他方法都需要CanBuildFrom
,例如集合API中的大多数map
方法。
Future.sequence
的隐式参数列表由两个参数组成,两者都必须存在于任何调用中。要隐式指定一个,另一个隐式指定,请使用implicitly
。例如:
val zz: Future[List[Int]] = Future.sequence(my)(implicitly, ec)