For-Comprehensions
For over an Option
Transform a present value and skip a missing one.
option-for
A `for` over an `Option` yields a new `Option`: it transforms the value inside a `Some` and leaves a `None` empty, like `map`.
For over an Option
OptionFor.scala
Replay: real traced execution (multi-file project)
object Main {
def main(args: Array[String]): Unit = {
val n = 5
val maybe: Option[Int] = if (n > 0) Some(n) else None
val result = for (v <- maybe) yield v * 2
val value = result.getOrElse(0)
println("hasValue=" + result.isDefined)
println("value=" + value)
}
}
object Main {
def main(args: Array[String]): Unit = {
val n = 0
val maybe: Option[Int] = if (n > 0) Some(n) else None
val result = for (v <- maybe) yield v * 2
val value = result.getOrElse(0)
println("hasValue=" + result.isDefined)
println("value=" + value)
}
}
n ← 5, maybe ← Some(5), result ← Some(10), value ← 10
1object Main {2 def main(args: Array[String]): Unit = {3 val n→ 5 = 5 //@n=04 val maybe→ Some(5): Option[Int] = if (n5 > 0) Some(n) else None5 val result→ Some(10) = for (v <- maybeSome(5)) yield v * 26 val value→ 10 = resultSome(10).getOrElse(0)78 println("hasValue=" + result.isDefinedtrue)9 println("value=" + value10)10 }11}outputhasValue=true value=10
n ← 0, maybe ← None, result ← None, value ← 0
1object Main {2 def main(args: Array[String]): Unit = {3 val n→ 0 = 04 val maybe→ None: Option[Int] = if (n0 > 0) Some(n) else None5 val result→ None = for (v <- maybeNone) yield v * 26 val value→ 0 = resultNone.getOrElse(0)78 println("hasValue=" + result.isDefinedfalse)9 println("value=" + value0)10 }11}outputhasValue=false value=0