以编程方式在Scala中设置重复参数

Seb*_*ian 1 language-features scala variadic-functions

我正打算Futures.awaitAll用可变数量的井来打电话Future.awaitAll被定义为awaitAll(timeout : Long, fts : Future[Any]*).我试过传入a List和a Array但两者都不起作用:

list = future1 :: future2 :: Nil

Futures.awaitAll(1000, list)

found : List[scala.actors.Future[Any]] required: scala.actors.Future[Any]
Run Code Online (Sandbox Code Playgroud)

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

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

Zac*_*ese 10

使用*表示它是一个变量...它可以在您添加时使用尽可能多的Future [Any]参数,但不能使用它们的列表/数组.

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

Futures.awaitAll(1000, future1, future2)
Run Code Online (Sandbox Code Playgroud)

代替

Futures.awaitAll(1000, list)
Run Code Online (Sandbox Code Playgroud)

编辑:如果您必须能够传入Futures.awaitAll(1000,list),那么尝试投射它.

试试这个:

Futures.awaitAll(1000, list: _*)
Run Code Online (Sandbox Code Playgroud)