2009-08-11 4 views
1

Ich versuche Futures.awaitAll mit einer variablen Anzahl von Well ... Future s anzurufen. awaitAll ist definiert als awaitAll(timeout : Long, fts : Future[Any]*). Ich habe versucht, vorbei in einem List und ein Array aber beide nicht funktionieren:Programmgesteuerte Einstellung wiederholter Parameter in Scala

list = future1 :: future2 :: Nil 

Futures.awaitAll(1000, list) 

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

EDIT: Was ich will, ist jetzt Aufruf Futures.awaitAll programmatisch mit einer variablen Anzahl von Argumenten tun (1 bis n). Die Verwendung von Futures.awaitAll(1000, future1, future2) ist also keine Option.

Kapitel 8.8 der Programmierung in Scala gaben mir keine Hinweise, wie dies entweder zu lösen, so ist Hilfe willkommen :)

+0

Dies wird irgendwo in PinS erwähnt, aber sehr kurz. –

Antwort

10

die Verwendung von * bedeutet, dass es ein Vararg ... es kann so viel Zukunft nehmen [Any] Parameter, die Sie hinzufügen, aber keine Liste/Array von ihnen.

es also für eine Parameterliste suchen, wie:

Futures.awaitAll(1000, future1, future2) 

statt

Futures.awaitAll(1000, list) 

Edit: Wenn Sie die Möglichkeit, in Futures.awaitAll (1000, Liste) passieren müssen, dann versuche es zu werfen.

diese So versuchen:

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

Ich habe die Frage geändert, um das Problem zu verdeutlichen. – Sebastian