Choose a fallback when the main result is unavailable.

recover-default Async APIs often provide recovery steps for failed work. This example models recovery as a safe choice between a primary value and a default.

Recover with a Default

ok
RecoverDefault.scala
Replay: real traced execution (multi-file project)
object Main {
  def main(args: Array[String]): Unit = {
    val ok = false
    val primary = 20
    val fallback = 5
    val value = if (ok) primary else fallback
    val source = if (ok) "primary" else "fallback"

    println("source=" + source)
    println("value=" + value)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val ok = true
    val primary = 20
    val fallback = 5
    val value = if (ok) primary else fallback
    val source = if (ok) "primary" else "fallback"

    println("source=" + source)
    println("value=" + value)
  }
}
  1. ok ← false, primary ← 20, fallback ← 5, value ← 5, source ← fallback

    1object Main {2  def main(args: Array[String]): Unit = {3    val ok→ false = false //@ok=true4    val primary→ 20 = 205    val fallback→ 5 = 56    val value→ 5 = if (okfalse) primary20 else fallback57    val source→ fallback = if (okfalse) "primary" else "fallback"89    println("source=" + sourcefallback)10    println("value=" + value5)11  }12}
    outputsource=fallback
    value=5
  1. ok ← true, primary ← 20, fallback ← 5, value ← 20, source ← primary

    1object Main {2  def main(args: Array[String]): Unit = {3    val ok→ true = true4    val primary→ 20 = 205    val fallback→ 5 = 56    val value→ 20 = if (oktrue) primary20 else fallback57    val source→ primary = if (oktrue) "primary" else "fallback"89    println("source=" + sourceprimary)10    println("value=" + value20)11  }12}
    outputsource=primary
    value=20