未来不会编译成功和失败



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

构造函数不能实例化为预期类型;找到: scala.util.Success[T] 必需: Int

和代码:

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

因为Future[Int] map期望一个具有域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
}

但是,这可能不是您想要的,因为表达式 s0 不执行任何操作,因此它们不是非常有趣的回调。相反,您可能希望transform结果:

future.transform {
  case Success(s) => Success(s)
  case Failure(f) => Success(0)
}

或从故障中recover,并带有0

future.recover {
  case f: Exception => 0
}

您是否正在尝试执行以下操作:

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

最新更新