首页 > 解决方案 > Scala 对 true 块内的 Try() 调用中的 main if 和失败的相同回退

问题描述

doSomething()在类似于以下情况的情况下寻找一种优雅的方式来进行回退:

if(boolean) {
    Try(canFailingMethod()) match {
        case Success() => _
        case Failure() => doSomething()
  }
} else {
     doSomething()
}

标签: scala

解决方案


像这样的东西怎么样:

def attemptWithFallback(flag: Boolean)(work: => Unit)(fallback: => Unit): Unit = {
  Try(()).filter(_ => flag).flatMap(_ => Try(work)).getOrElse(fallback)
}

推荐阅读