Ale*_*ire 4 scala tuples option
如果我有喜欢的Scala元组选项:
(Some(1), None)
(None, Some(1))
(None, None)
Run Code Online (Sandbox Code Playgroud)
我希望总是提取"Some"值(如果存在),否则得到None.模式匹配的唯一方法是什么?
Mal*_*lio 10
有这样的:
def oneOf[A](tup: (Option[A], Option[A])) = tup._1.orElse(tup._2)
Run Code Online (Sandbox Code Playgroud)
这将返回已定义的第一个选项,如果两者都不返回None.
编辑:
另一种表达同一事物的方法是
def oneOf[A](tup: (Option[A], Option[A])) =
tup match { case (first, second) => first.orElse(second) }
Run Code Online (Sandbox Code Playgroud)
它更长,但可能更具可读性.