Futures and Async Concepts
Recover with a Default
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
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)
}
}
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
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