私はこのようなことをしたい:
def or[A](x: Option[A], y: Option[A]) = x match {
case None => y
case _ => x
}
これを行うための慣用的な方法は何ですか? 私が思いついた最高のものはSeq(x, y).flatten.headOption
私はこのようなことをしたい:
def or[A](x: Option[A], y: Option[A]) = x match {
case None => y
case _ => x
}
これを行うための慣用的な方法は何ですか? 私が思いついた最高のものはSeq(x, y).flatten.headOption
に対してすでに定義されていOption
ます:
def or[A](x: Option[A], y: Option[A]) = x orElse y
Scalaz では、これに Plus 型クラスを使用できます。
scala> 1.some <+> 2.some
res1: Option[Int] = Some(1)
scala> none[Int] <+> 2.some
res2: Option[Int] = Some(2)
scala> none[Int] <+> none[Int]
res3: Option[Int] = None