当我尝试在正常的sbt项目而不是播放项目中使用Play WS库时,我必然会使用play.api.Play.current并获得 java.lang.RuntimeException:" 尝试运行应用程序时没有启动应用程序" .
我正在使用一些 bazel 测试目标(scala 风格java_test
)运行 E2E 测试。
在 Maven 中,我曾经将日志转储到target/logs
在测试期间创建的文件夹,然后如果出现故障 - 我可以查看该文件夹并找到日志。
在 bazel 中 - 我可以在我的测试日志配置中放入什么路径,以便在测试完成/测试失败时可以写并且方便地使用它?
我知道该java.io.tmp
目录是可写的,但在测试完成后立即被删除。
对于那些在那里的scala专家,我目前正在为我的大学课程编写代码,并且编译器抛出错误,我不确定该如何解决。
以下代码应仅调用菜单选项:
def menu(option: Int): Boolean = {
actionMap.get(option) match {
case Some(f) => f()
case None =>
println("ERROR: Please enter an option between 1-8")
true
}
}
Run Code Online (Sandbox Code Playgroud)
编译器不喜欢这一行:
case Some(f) => f()
Run Code Online (Sandbox Code Playgroud)
更具体地说,它不喜欢
=> f()
Run Code Online (Sandbox Code Playgroud)
我对函数式编程和scala完全陌生,因此,任何技巧或线索都很棒。
谢谢
Akka / Scala Future背后的理念是,每当我们找到阻塞的代码段(例如IO调用,网络调用等)时,我们都必须将其包装在一个Future中,并在某个时间点之后异步获取结果。但是,之前阻塞主线程的阻塞代码块现在阻塞了Future支持的单独线程。那Akka / Scala Future买了什么。
val blockingCallResult: Result = block() //blocks the thread of execution.
now let's use Akka/Scala future and wrap the blocking call with Future
val future = Future[Result] {
val blockingCallResult: Result = block() //also blocks on some thread in thread pool
blockingCallResult
}
Run Code Online (Sandbox Code Playgroud)
我们如何通过利用未来而受益。