Scala Tuple选项

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)

它更长,但可能更具可读性.