Я хорошо знаком с for
пониманием и flatMap
в опциях.
Итак, я знаю, что вы можете сделать что-то вроде
val a: Option[_] = for {
foo <- Some(x)
bar <- Some(y)
baz <- Some(z)
} yield baz
что дает мне Some(z)
, если ничего в for comprehension не равно None
, так как он выполняет flatMap
для каждого оператора.
Но на самом деле я ищу что-то наоборот. Я хотел бы перейти к for
пониманию, пока все None
, как orElse
в for
понимании.
Например:
val b: Option[_] = for {
foo <- None
bar <- Some(x)
baz <- None
} yield *return the one with some*
Есть ли что-нибудь подобное, или какой лучший подход для этого?
Заранее спасибо!