我正在尝试使用可变数量的井Futures.awaitAll
来调用Future
。 awaitAll
定义为awaitAll(timeout : Long, fts : Future[Any]*)
。我尝试传入List
和Array
,但两者都不起作用:
list = future1 :: future2 :: Nil
Futures.awaitAll(1000, list)
found : List[scala.actors.Future[Any]] required: scala.actors.Future[Any]
编辑:我现在要做的是使用可变数量的参数(1到n)以编程方式调用Futures.awaitAll
。因此,使用Futures.awaitAll(1000, future1, future2)
不是一种选择。
Scala编程的第8.8章没有给我任何提示如何解决这个问题,所以欢迎提供帮助:)
答案 0 :(得分:10)
使用*表示它是一个变量...它可以在您添加时使用尽可能多的Future [Any]参数,但不包含它们的列表/数组。
所以它正在寻找一个参数列表,例如:
Futures.awaitAll(1000, future1, future2)
而不是
Futures.awaitAll(1000, list)
编辑:如果您必须能够传入Futures.awaitAll(1000,list),那么请尝试投射它。
所以试试这个:
Futures.awaitAll(1000, list: _*)
答案 1 :(得分:1)
Futures.awaitAll(1000, futures: _*)
应该工作(现在不能测试)。请参阅Scala Language Specification中的4.6.2。