Scala 将[A,B]中的任一项转换为选项[A],其中左变为右

Scala 将[A,B]中的任一项转换为选项[A],其中左变为右,scala,either,scala-option,Scala,Either,Scala Option,我想将或[A,B]转换为一个选项,这样如果或是左它是一些[A],如果它是右它是无 到目前为止,我已经想出了 other.swap.map(Some()).getOrElse(None) 这有点像一口 及 这很好,但理想情况下,我想知道是否有一种更惯用的方法使用方法,而不是显式匹配。将路易斯的评论转换为我们的答案 either.swap.toOption 比如说 val either: Either[String, Int] = Left("Boom") either.toOption eit

我想将
或[A,B]
转换为一个选项,这样如果
它是
一些[A]
,如果它是
它是

到目前为止,我已经想出了

other.swap.map(Some()).getOrElse(None)
这有点像一口


这很好,但理想情况下,我想知道是否有一种更惯用的方法使用方法,而不是显式匹配。

将路易斯的评论转换为我们的答案

either.swap.toOption
比如说

val either: Either[String, Int] = Left("Boom")
either.toOption
either.swap.toOption 
输出

res0: Option[Int] = None
res1: Option[String] = Some(Boom)

其中我们注意到
other.toooption
返回
Option[Int]
,而
other.swap.toooption
返回
Option[String]


很抱歉复制了Luis的评论,但我认为这足够有用,可以作为答案发布。

或者。swap.toooption
-是你的朋友。很好,谢谢!现在为什么我不能找到,无论我在谷歌上搜索了多少…这就是为什么我建议谷歌很好地找到复杂的问题,而不是简单的方法。我个人的建议是,你总是需要一个方法打开scaladoc并在那里搜索。(适用于几乎所有的图书馆/语言)好的,谢谢advice@LuisMiguelMejíaSuárez为抄袭您的评论表示歉意,但在我看来,这足够有用,可以作为答案发布。
res0: Option[Int] = None
res1: Option[String] = Some(Boom)