【问题标题】:Convert List[A] to List[Option[A]] depending on A members根据 A 成员将 List[A] 转换为 List[Option[A]]
【发布时间】:2019-07-21 12:25:15
【问题描述】:

我已经定义了:

final case class EventOpt(start: Option[Long], end: Option[Long])
final case class Event(start: Long, end: Long)

对我来说唯一有趣的对象是那些同时设置了两个字段的对象,我想过滤其余的对象

拥有List[EventOpt] 我想在startend 都设置时使用Some(Event) 将它转换为List[Option[Event]],而Nonestartend 中的任何一个是@ 987654330@?

例如。

List(EventOpt(Some(1), None), EventOpt(None, Some(2)), EventOpt(Some(3), Some(4))) 
=>
List(None, None, Some(Event(4, 3)))

通过这样做,将允许在最后一个列表上做一个简单的flatMap 并省略Nones

【问题讨论】:

    标签: scala functional-programming scala-collections


    【解决方案1】:

    您不需要单独的flatMap 步骤,只需collect 只需您立即需要的:

    eventOpts.collect { case EventOpt(Some(x), Some(y)) => Event(x, y) }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-23
      • 2015-03-13
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      相关资源
      最近更新 更多