【发布时间】:2018-10-19 15:10:42
【问题描述】:
我有这样的理解:
val ao = Option(1)
val bo = Option(2)
val (x,y) = for (a <- ao; b <- bo) yield (a+b, b+a*2)
但是这不起作用。对于理解返回 Option[(Int,Int)] 但不能分配给单个 x 和 y。
如果我这样做:
val Some((x,y)) = for ...
yield None 时会导致异常。
如何实现这个目标?我希望 x 和 y 为 Option[Int]。我希望在不使用 x._1 或 x.getOrElse 或 match 之类的情况下找到一个优雅的解决方案
【问题讨论】:
-
unzip返回Iterable列表,这很可悲……嗯。 -
以下是否有帮助:
val (x, y) = (Option(1), Option(2)) match { case (Some(a), Some(b)) => (Some(a+b), Some(b+a*2)); case _ => (None, None) }其中x和y是Options。
标签: scala pattern-matching option