2015-03-02 60 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