最好的方法是:
def reduce[A](x: Option[A], y: Option[A])(f: (A, A) => A): Option[A] =
(x, y) match {
case (Some(a), Some(b)) => Some(f(a, b))
case (None, None) => None
case (_, None) => x
case (None, _) => y
}
我看了this问题,但他的情况与我的情况略有不同......
答案 0 :(得分:15)
最短可能是
(x ++ y).reduceLeftOption(f)
由于从Option
到Iterable
的隐式转换而有效,而这种转换恰好有一个方法可以完全满足您的需求。