如果我有喜欢的 Scala 元组选项:
(Some(1), None)
(None, Some(1))
(None, None)
并且我希望始终提取始终存在的“Some”值,否则获取 None。模式匹配的唯一方法?
最佳答案
有这个:
def oneOf[A](tup: (Option[A], Option[A])) = tup._1.orElse(tup._2)
这将返回定义的第一个选项,如果两者都不是,则返回 None 。
编辑:
表达同一件事的另一种方式是
def oneOf[A](tup: (Option[A], Option[A])) =
tup match { case (first, second) => first.orElse(second) }
它更长,但可能更具可读性。
关于Scala 元组选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43573785/