And*_*idy 2 monads scala scala-option
val one: Option[Int] = None
val two = Some(2)
Option(one.getOrElse(two.getOrElse(null))) // Gives me Some(2) which I want
val one = Some(1)
val two = None
Option(one.getOrElse(two.getOrElse(null))) // Gives me Some(1) which I want
val one: Option[Int] = None
val two: Option[Int] = None
Option(one.getOrElse(two.getOrElse(null))) // Gives me None which I want
val one = Some(1)
val two = Some(2)
Option(one.getOrElse(two.getOrElse(null))) // Gives me Some(1) when I want an exception
Run Code Online (Sandbox Code Playgroud)
我简要地研究了Either类型,但它似乎是"表示两种可能类型之一的值".我错过了一些数据结构还是Monad?基本上我想要一个显式的(并且如果两者都有价值则抛出错误)如果可用则获得一个或获得无
gwe*_*zek 10
我不知道有任何预制的,所以这是一个功能:
def xor[T](x: Option[T], y: Option[T]): Option[T] = (x, y) match {
case (Some(_), None) => x
case (None, Some(_)) => y
case (None, None) => None
case _ => throw new Exception()
}
Run Code Online (Sandbox Code Playgroud)