【发布时间】:2017-09-24 17:35:24
【问题描述】:
我有下面的代码块。我的意图是使用方法参数进行一些处理并返回Future[Int] 或fail Future。如果我对Future 中的方法的参数是None 类型,我想使Future 失败。我有下面的代码。我想知道是否有更简洁和实用的方法来实现同样的目标。
def testoption(myFutOptInt: Future[Option[Int]]) = {
myFutOptInt.map { myOptInt =>
myOptInt match {
case None => throw new BadRequestException("Oh no.....") //Future.failed(BadRequestException(""))
case Some(myInt) => myInt + 45
}
} recoverWith {
case e:Exception => Future.failed(e)
}
}
- 我不喜欢我必须进行比赛的部分,想知道是否有办法进行
map或更好的方法并且仍然可以实现它。如果我做getOrElse,我想如果值不是None,我将无法编写业务逻辑?所以我认为getOrElse也不可能? - 我不喜欢这段代码的另一件事是我抛出了一个异常,然后我必须执行
recoverWith才能使Future失败。
我可以如何增强上面的代码?
【问题讨论】:
标签: scala functional-programming scala-collections