scala - 减少Scala中的选项?

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

最佳答案

最短的大概是

(x ++ y).reduceLeftOption(f)

由于来自 Option 的隐式转换而起作用至 Iterable恰好有一种方法可以完全满足您的需求。

关于scala - 减少Scala中的选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22902542/

相关文章:

hadoop - map 中的输入/输出流减少链接

java - 使用 Spark 检测大型数据集中的重复连续值

scala - 使用 scalacheck 测试有效的状态转换

java - 是否可以将自定义 java 类导入 Scala?

R 语言函数工厂 : How to ensure safety?

clojure - 为什么减少这个惰性序列会使这个 Clojure 程序减慢 20 倍?

scala - List.view 和 LazyList 有什么区别?

scala - Cassandra 与斯卡拉

multithreading - 在函数式编程中如何避免副作用

functional-programming - 您可以用宏做什么不能用过程完成的事情?