1

私はこのようなことをしたい:

def or[A](x: Option[A], y: Option[A]) = x match {
 case None => y   
 case _ => x 
}

これを行うための慣用的な方法は何ですか? 私が思いついた最高のものはSeq(x, y).flatten.headOption

4

3 に答える 3

13

に対してすでに定義されていOptionます:

def or[A](x: Option[A], y: Option[A]) = x orElse y
于 2014-04-18T21:18:12.870 に答える
2

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
于 2014-04-18T21:17:50.087 に答える