1

我正在尝试Futures.awaitAll使用可变数量的 well...进行呼叫FutureawaitAll定义为awaitAll(timeout : Long, fts : Future[Any]*)。我试过传入 aList和 anArray但两者都不起作用:

list = future1 :: future2 :: Nil

Futures.awaitAll(1000, list)

found : List[scala.actors.Future[Any]] required: scala.actors.Future[Any]

编辑:我现在想做的是Futures.awaitAll使用可变数量的参数(1到n)以编程方式调用。所以使用Futures.awaitAll(1000, future1, future2)不是一种选择。

Programming in Scala 的第 8.8 章也没有给我任何提示如何解决这个问题,所以欢迎提供帮助:)

4

2 回答 2

10

使用 * 意味着它是一个可变参数...它可以采用与您添加一样多的 Future[Any] 参数,但不能采用它们的列表/数组。

所以它正在寻找一个参数列表,例如:

Futures.awaitAll(1000, future1, future2)

代替

Futures.awaitAll(1000, list)

编辑:如果您必须能够传入 Futures.awaitAll(1000, list),然后尝试强制转换它。

所以试试这个:

Futures.awaitAll(1000, list: _*)
于 2009-08-11T14:46:26.937 回答
1
Futures.awaitAll(1000, futures: _*)

应该可以工作(现在无法测试)。请参阅Scala 语言规范中的 4.6.2 。

于 2009-08-11T15:09:24.713 回答