减少scala中的选项?

pat*_*rit 8 reduce functional-programming scala optional scalaz

做这个的最好方式是什么:

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
  }
Run Code Online (Sandbox Code Playgroud)

我看了这个问题,但他的情况与我的情况略有不同......

Rex*_*err 15

最短的可能是

(x ++ y).reduceLeftOption(f)
Run Code Online (Sandbox Code Playgroud)

它的作品,因为从隐式转换OptionIterable这恰巧有一个方法,做正是你需要的.