如何解释Scala中类型为Option [T]的val

时间:2015-03-02 17:03:42

标签: scala

我正在尝试分析由其他人编写的Scala代码,并且在这样做时,我希望能够编写单元测试(不幸的是,在代码编写之前没有编写)。 作为Scala的亲戚新手,特别是在Futures概念领域,我试图理解以下代码行。

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


更新    上面的代码应该是:

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


- NiceReport是案例类


-----------更新到此结束----------------

由于我试图模拟一个Actor,我创建了这个新的Actor,我将 niceAnalysis val 作为一个字段引入。 我看到这个“niceAnalysis”的第一个问题是它看起来像一个匿名函数。 如何“初始化”此val,或为其赋予初始值。
我的目标是在我的测试类中创建一个测试,我将把这个初始化的val值传递给我的测试actor的receive方法。


我完成这个的天真方法看起来像:

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


IntelliJ也不喜欢它。我的SBT编译和测试失败了。

所以,我需要首先理解“niceAnalyis”声明,然后了解如何给它一个初始值。请指教。

1 个答案:

答案 0 :(得分: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})