Future未编译成功与失败

时间:2018-03-09 14:29:36

标签: scala

为什么这不编译?我在SuccessFailure行中收到以下错误:

  

构造函数无法实例化为期望的类型;发现:   scala.util.Success [T]必需:Int

代码:

    val future = Future { 1 }
    future.map { 
       case Success(s) => s
       case Failure(f) => 0
    }

2 个答案:

答案 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
    }
相关问题