Есть класс
class MyType {
def status(): String = "Connected" // demo implementation
}
У меня есть val x: Option[Option[MyType]]
. Мне нужно обработать это значение следующим образом:
x match {
case None => "Error1"
case Some(None) => "Error2"
case Some(Some(t)) => t.status
}
Я хотел бы переписать тот же код с функциями более высокого порядка, как это описано в Tom Morris post . Как правильно его кодировать?
Несколько слов о мотивации, чтобы задать вопрос. Официальная документация гласит :
Самый идиоматический c способ использования экземпляра scala.Option
состоит в том, чтобы рассматривать его как коллекцию или монаду и использовать map
, flatMap
, filter
или foreach
<...> Менее идиоматизированный c способ использования scala.Option
значений заключается в сопоставлении с шаблоном
Я не совсем уверен, что понимаю, что "idiomati c" означает точно, но звучит как "хорошо" для меня.