Вы можете использовать for
для объединения map
и flatMap
вызовов таким образом, чтобы их было легко прочитать:
for {
a1 <- a(1)
a2 <- a(a1)
a3 <- stop(a2)
a4 <- a(a3)
a5 <- a(a4)
} yield a5
Если все вызовы возвращают Some
, тогда результат равен Some(a5)
, но если какой-либо вызов вернет None
, тогда обработка будет остановлена и результат будет None
.Таким образом, в этом случае он остановится после вызова stop
и вернет None
.
Использование for
позволяет использовать значимое имя для промежуточных результатов, облегчая понимание кода.