2009-08-11 4 views
1

J'essaie d'appeler Futures.awaitAll avec un nombre variable de puits ... Future s. awaitAll est défini comme awaitAll(timeout : Long, fts : Future[Any]*). J'ai essayé passer dans un List et un Array, mais les deux ne fonctionnera pas:Programmation de paramètres répétés dans Scala

list = future1 :: future2 :: Nil 

Futures.awaitAll(1000, list) 

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

EDIT: Ce que je veux maintenant faire est d'appeler avec un programme Futures.awaitAll nombre variable d'arguments (1 à n). Donc, en utilisant Futures.awaitAll(1000, future1, future2) n'est pas une option.

Chapitre 8.8 de programmation Scala ne me donner des conseils comment résoudre ce soit, si l'aide est la bienvenue :)

+0

Ceci est mentionné quelque part dans PinS, mais très brièvement. –

Répondre

10

Utilisation du * signifie que c'est un vararg ... il peut prendre autant de l'avenir [Any] paramètres que vous ajoutez, mais pas une liste/tableau d'entre eux.

Il est donc à la recherche d'une liste de paramètres tels que:

Futures.awaitAll(1000, future1, future2) 

au lieu de

Futures.awaitAll(1000, list) 

Edit: Si vous devez avoir la capacité de passer Futures.awaitAll (1000, liste), alors essayez de le jeter.

Donc, essayez ceci:

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

J'ai changé la question pour rendre le problème plus clair. – Sebastian