2009-08-11 6 views
1

Я пытаюсь позвонить Futures.awaitAll с переменным количеством колодцев ... Future s. awaitAll определяется как awaitAll(timeout : Long, fts : Future[Any]*). Я попытался переходящая в List и Array, но и не будет работать:Программируемая установка Повторяющиеся параметры в Scala

list = future1 :: future2 :: Nil 

Futures.awaitAll(1000, list) 

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

EDIT: Что я теперь хочу сделать вызов Futures.awaitAll программно с переменным числом аргументов (от 1 до п). Поэтому использование Futures.awaitAll(1000, future1, future2) - это не вариант.

Глава 8.8 Программирование в Scala не давал мне никаких намеков, как решить эту проблему либо, так что помощь приветствуется :)

+0

Это упоминается где-то в PinS, но очень кратко. –

ответ

10

Использование * означает, что это vararg ... это может занять много будущее [Любые] параметры при добавлении, но не список/массив из них.

Так он ищет список параметров, таких как:

Futures.awaitAll(1000, future1, future2) 

вместо

Futures.awaitAll(1000, list) 

Edit: Если вы должны иметь возможность передавать в Futures.awaitAll (1000, список), затем попробуйте сделать это.

Так попробуйте это:

Futures.awaitAll(1000, list: _*) 
+0

Я изменил вопрос, чтобы сделать проблему более ясной. – Sebastian

Смежные вопросы