Скажем, у меня есть функция, которая может принимать необязательный параметр, и я хочу вернуть Some если аргумент None и a None если аргумент Some:
def foo(a: Option[A]): Option[B] = a match {
case Some(_) => None
case None => Some(makeB())
}
Поэтому я хочу сделать вид инверсии map. Варианты orElse неприменимы, поскольку они сохраняют значение a если оно присутствует.
Есть ли более краткий способ сделать это, чем if (a.isDefined) None else Some(makeB())?