Scala:Concatonate Option [List]的两个实例

时间:2016-10-19 09:10:38

标签: scala scalaz

鉴于以下内容:

val l1 = Some(List(1))
val l2 = Some(List(2))

我想连接l1l2,以便在两个选项等于List(1, 2)时获得NilNone

如果有优雅的解决方案,我很乐意使用scalaz。

3 个答案:

答案 0 :(得分:3)

l1.getOrElse(Nil) ::: l2.getOrElse(Nil)

答案 1 :(得分:2)

还有这个选项:

List(l1, l2).flatMap(_.toList).flatten

可以轻松地将其用于任意数量的Option[List[_]]

答案 2 :(得分:0)

当您使用cats类型

时,使用semigroup库会更加简单
import cats._ , cats.implicits._ , cats.instances._ 

scala> Option(List(3)) |+| Option(List(5))
res0: Option[List[Int]] = Some(List(3, 5))

scala> Option(List(3)) |+| None
res1: Option[List[Int]] = Some(List(3))