如何使用PartialFunction.applyOrElse

Arn*_*sen 2 scala partialfunction

我有一个PartialFuncton[Throwable,Future[Result]]名为errorMap的函数,用于将throwable转换为结果或将来失败.我可以通过做liftgetOrElse这样的:

val x: Future[Result] = errorMap.lift(e).getOrElse(Future.failed(e))
Run Code Online (Sandbox Code Playgroud)

我认为同样应该可以实现applyOrElse,但我似乎无法弄清楚如何调用它来实现这一目标.我误解了什么applyOrElse是为了什么?

dwi*_*ern 6

applyOrElse接受函数的第二个参数 - 在你的情况下是一个(Throwable) => Future[Result]

传递一个这样的函数:

errorMap.applyOrElse(e, _ => Future.failed(e))

或者干脆

errorMap.applyOrElse(e, Future.failed)