Scala 使用自定义ExecutionContext执行Future.sequence

Scala 使用自定义ExecutionContext执行Future.sequence,scala,reactive-programming,Scala,Reactive Programming,我正在尝试使用指定的ExecutionContext从List[Future[Int]]创建Future[List[Int]]。但是,我得到了关于类型为CanBuildFrom的第二个隐式参数cbf的错误。我不完全理解CanBuildFrom参数的用途,当我试图忽略它时,会出现如下错误: - not enough arguments for method sequence: (implicit cbf: scala.collection.generic.CanBuildFrom[Li

我正在尝试使用指定的
ExecutionContext
List[Future[Int]]
创建
Future[List[Int]]
。但是,我得到了关于类型为
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)

Future.sequence
需要一个
CanBuildFrom
在它返回的
Future
中构建集合。标准库中的许多其他方法需要
CanBuildFrom
,例如collections API中的大多数
map
方法


Future.sequence
的隐式参数列表由两个参数组成,并且这两个参数都必须出现在任何调用中。要显式指定一个,隐式指定另一个,请隐式使用
。例如:

val zz: Future[List[Int]] = Future.sequence(my)(implicitly, ec)

我不知道如何含蓄地使用
,但今天我学到了一些新东西。滑溜的什么是一个可以从不过?我怎样才能非隐式地创建一个呢?@jonderry
CanBuildFrom
是一个为构建者提供的工厂,用于任何适合返回的集合。您可以通过创建一个实现
CanBuildFrom
trait的类来手动创建一个。