scala - 当只有一个选项不为空时做某事

标签 scala collections

如果两个选项中的一个不为空,我想计算一些东西。显然这可以通过模式匹配来完成,但有没有更好的方法?

(o1, o2) match {
  case (Some(o), None) => Some(compute(o))
  case (None, Some(o)) => Some(compute(o))
  case _ => None
}

最佳答案

你可以这样做:

if (o1.isEmpty ^ o2.isEmpty)
  List(o1,o2).flatMap(_.map(x=>Some(compute(x)))).head
else
  None

但是模式匹配可能是更好的方法。

关于scala - 当只有一个选项不为空时做某事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43299907/

相关文章:

html - 如何在不将绑定(bind)片段包装在 XML 文字中的情况下组合绑定(bind)片段

scala - 如何从 List scala 返回多个随机元素

scala - 为什么 Scala 的 `GenTraversableOnce` 没有声明 `map` ?

java - 排序 ArrayList HashMap

scala - 检查集合中包含的所有元组中的给定元素是否相等

java - Eclipse:Scala 无法访问 Java 类成员 - 刚刚经过一些清理

scala - 使用 Akka Hello World 示例的简单并发

arrays - 从 Ruby 数组中删除次要项

java - 如何将多个arrayList替换为单个Collection Java

c# - Linq to EF .Clear() 不清除