我有一个名为errorMap的PartialFuncton[Throwable,Future[Result]]
,用于将可抛出的东西转换为结果或失败的未来。我可以通过lift
和这样的getOrElse
来做到这一点:
val x: Future[Result] = errorMap.lift(e).getOrElse(Future.failed(e))
我认为applyOrElse
也应该可以实现同样的事情,但我似乎不知道如何称呼它来实现这一目标。我误解了applyOrElse
的用途吗?
applyOrElse
的第二个参数需要一个函数——在你的例子中是一个(Throwable) => Future[Result]
给它传递一个函数,如下所示:
errorMap.applyOrElse(e, _ => Future.failed(e))
或者干脆
errorMap.applyOrElse(e, Future.failed)