【问题标题】:Scala: Concatonate two instances of Option[List]Scala:连接 Option [List] 的两个实例
【发布时间】:2016-10-19 09:10:38
【问题描述】:

鉴于以下情况:

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

如果两个选项都等于None,我想连接l1l2,以便我得到List(1, 2)Nil

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

【问题讨论】:

    标签: scala scalaz


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      还有这个选项:

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

      这可以很容易地用于任意数量的Option[List[_]]

      【讨论】:

        【解决方案3】:

        当您使用semigroup 类型类时,使用cats 库要简单得多

        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))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-03-27
          • 2014-05-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-30
          • 1970-01-01
          相关资源
          最近更新 更多