这个问题与this question相反.
val x = Some((1, 2))
val (y: Option[Int], z: Option[Int]) = ???
纯 Scala 答案和 Scalaz anwers 都有帮助。
最佳答案
我实际上认为您的答案非常清楚,但是既然您提到了 Scalaz,则此操作称为 unzip
:
scala> import scalaz._, std.option._
import scalaz._
import std.option._
scala> val x: Option[(Int, Int)] = Some((1, 2))
x: Option[(Int, Int)] = Some((1,2))
scala> Unzip[Option].unzip(x)
res0: (Option[Int], Option[Int]) = (Some(1),Some(2))
你应该可以简单地写
x.unzip
,但不幸的是标准库的可怕隐式转换来自 Option
至 Iterable
将首先开始,你最终会得到一个 (Iterable[Int], Iterable[Int])
.一年后回顾:实际上可以用 Scalaz 的
UnzipPairOps
做到这一点。 :scala> import scalaz.std.option._, scalaz.syntax.unzip._
import scalaz.std.option._
import scalaz.syntax.unzip._
scala> val x: Option[(Int, Int)] = Some((1, 2))
x: Option[(Int, Int)] = Some((1,2))
scala> x.unfzip
res0: (Option[Int], Option[Int]) = (Some(1),Some(2))
你在想什么,2014年的我?
关于scala - 如何将选项元组转换为 Scala 中的选项元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21463002/