减少scala中的选项?

时间:2014-04-07 02:13:56

标签: scala functional-programming reduce scalaz optional

最好的方法是:

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问题,但他的情况与我的情况略有不同......

1 个答案:

答案 0 :(得分:15)

最短可能是

(x ++ y).reduceLeftOption(f)

由于从OptionIterable的隐式转换而有效,而这种转换恰好有一个方法可以完全满足您的需求。