【发布时间】:2016-11-04 19:31:35
【问题描述】:
我想做这样的事情。
def foo(s : String): Future[Boolean] = Future {
val a = someLongRunningMethod
if(!a)
return false or throw some exception // what should i return
//do some more thing
val b= someMoreLongRunningMethod
if(b)
return true
return false
}
但不能将 return 与布尔值一起使用。我收到类型不匹配错误。
Error:(32, 12) type mismatch;
found : Boolean(false)
required: scala.concurrent.Future[Boolean]
return false
我是 Scala 新手。我正在使用 foo 方法。我不确定这是否是使用它的最佳方式。请建议我应该如何实现它?
val r = foo("Nishant")
r.onComplete {
case Success(result) => {
//Do something with my list
println("success: " + result)
}
case Failure(exception) => {
//Do something with my error
println("failure")
}
}
val re = Await.result(r, 10 second)
【问题讨论】:
-
您需要先阅读有关
Future类型如何工作的教程(顺便说一句,使用这样的返回不是Scala idomatic) -
我阅读了一些教程,但它们都有单个 if/else 块的示例。你能推荐一些好的教程吗
标签: scala concurrency future