scala - 如何将选项元组转换为 Scala 中的选项元组?

标签 scala tuples scala-option

这个问题与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 ,但不幸的是标准库的可怕隐式转换来自 OptionIterable将首先开始,你最终会得到一个 (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/

相关文章:

scala - Scala的并行集合是否可以保证订购?

python - fetchone() 正在将 int 变量设置为元组

python - 如何将值添加到现有字典键 Python

scala - Scala 中带有 getOrElse bool 默认值的选项

scala - 在Scala中,是否存在用于将异常转换为Option的预先存在的库函数?

Scala 惯用语从迭代器中找到第一个选项

scala - 使用跳过或跨步在范围内触发聚合函数

scala - Play Framework 2.X 和阻塞数据库调用

python - 按日期对元组列表进行排序

scala - 拆分单行的多个字段或列并使用 Scala 创建多行