2015-03-02 64 views
0

我想分析其他人編寫的Scala代碼,並且這樣做,我希望能夠編寫單元測試(未寫入在編寫代碼之前,不幸的是)。 作爲一個相對的新手斯卡拉,特別是在期貨概念領域,我想了解下面的代碼行。如何解釋一個類型爲Scala的Scala [T]

val niceAnalysis:Option[(niceReport) => Future[niceReport]] = None 


更新: 上面的代碼行應該是:

val niceAnalysis:Option[(NiceReport) => Future[NiceReport]] = None 


- 凡NiceReport是的情況下,類


-----------更新在此結束----------------

由於我試圖模擬演員,我創建了這個新的演員,我介紹我的niceAnalysis val作爲一個領域。 我用這個「niceAnalysis」看到的第一個問題是它看起來像一個匿名函數。 如何「初始化」此val,或給它一個初始值。
我的目標是在我的測試類中創建一個測試,我將在這個初始化的val值中傳入我的測試actor的接收方法。


我完成天真的方法,這看起來像:

val myActorUnderTestRef = TestActorRef(new MyActorUnderTest("None)) 


也不做的IntelliJ喜歡它。我的SBT編譯和測試失敗。

所以,我需要首先理解「niceAnalyis」聲明,然後理解如何給它一個初始值。請指教。

回答

2

您是對的,這是一個值可能包含從niceReportFuture[niceReport]類型的函數。你可以傳遞一個匿名函數或只是一個函數指針。最簡單的理解可能是指針,所以我將提供第一,但於長遠的考慮最簡單的將是匿名函數最有可能的,我將展示第二:

import scala.concurrent.Future 
import scala.concurrent.ExecutionContext.Implicits.global 

def strToFuture(x: String) = Future{ x } //merely wrap the string in a future 
val foo = Option(strToFuture) 

相反,一個襯墊是如下:

val foo = Option((x:String)=>Future{x}) 
+0

這是有道理的。我現在試試這個 – user3825558 2015-03-02 17:23:38

+0

我發佈了一個更新我的問題,因爲我剛剛意識到我忘了提及其他細節。 – user3825558 2015-03-02 17:30:36

+0

這不會改變我的答案。我使用了String,但您可以使用任何類型,包括NiceReport。 – 2015-03-02 18:35:17