为什么这不编译?我在Success
和Failure
行中收到以下错误:
构造函数无法实例化为期望的类型;发现: scala.util.Success [T]必需:Int
代码:
val future = Future { 1 }
future.map {
case Success(s) => s
case Failure(f) => 0
}
答案 0 :(得分:3)
由于map
的{{1}}需要使用域Future[Int]
的函数,而是尝试将域Int
中的某个函数传递给它。
最合适的语法是Try[Int]
:
onComplete
然而,这可能不是你想要的,因为表达式import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global
import scala.util.{Try, Success, Failure}
val future = Future { 1 }
future.onComplete {
case Success(s) => s
case Failure(f) => 0
}
和s
没有做任何事情,因此它们不是非常有趣的回调。相反,您可能想要0
结果:
transform
{p>或future.transform {
case Success(s) => Success(s)
case Failure(f) => Success(0)
}
来自失败的recover
:
0
答案 1 :(得分:1)
您是否正在尝试执行以下操作:
val future = Future {
1
}
future onComplete {
case Success(s) => s
case Failure(f) => 0
}