Окей, в прошлый раз я рассказывал о монадах в целом, но без пояснения, как их применять на практике, понять может быть тяжеловато. Давайте же взглянем на основные монады Scala! Тип первый - Option. Эта монада чертовски хороша, друг мой, ведь благодаря ей ты можешь перестать бояться NullPointerExeption! Она имеет два состояния - Some(x) и None, либо содержит значение, либо нет. При применении map() или for-comprehension, соответственно, операция будет производиться только с Some(x). Так же, при проверке содержимого мы можем разделять логику с помощью паттерн-матчинга, например: option match {
case Some(v) => "Здесь мы получили значение v, можем писать дальнейшую логику"
case None => "Здесь отсутствует содержимое, так же можем составить логику при None"
} Следующий вид - Either. Сигнатура у него - Either[T1, T2] -это означает, что Either может содержать в себе 2 вида данных, один из которых записывается в Right(x), другой - в Left(x). Принято, чтобы значения "положительные", т.е. те