2009-08-11 64 views
1

我試圖調用Futures.awaitAll以及可變數目的... Future s。 awaitAll定義爲awaitAll(timeout : Long, fts : Future[Any]*)。我試圖傳遞一個ListArray但都行不通:在Scala中以編程方式設置重複參數

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)不是一個選項。

在Scala編程的章節8.8沒有給我任何提示如何可以解決這個問題,所以幫助是值得歡迎:)

+0

這確實在PinS的某處被提到,但非常簡短。 – 2009-08-11 22:02:04

回答

10

使用*意味着它是一個可變參數...它可以採取許多未來你添加的[Any]參數,但不是它們的列表/數組。

所以它在尋找一個參數列表如:

Futures.awaitAll(1000, future1, future2) 

代替

Futures.awaitAll(1000, list) 

編輯:如果你必須在Futures.awaitAll(1000,列表)來傳遞的能力,然後嘗試投它。

那麼試試這個:

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

我改變了問題,使問題更清楚。 – Sebastian 2009-08-11 14:56:07