scala - 根据 A 成员将 List[A] 转换为 List[Option[A]]
问题描述
我已经定义:
final case class EventOpt(start: Option[Long], end: Option[Long])
final case class Event(start: Long, end: Long)
对我来说唯一有趣的对象是那些同时设置了两个字段的对象,我想过滤其余的
有List[EventOpt]
没有我想将它转换为在两者都设置时使用List[Option[Event]]
和当它们中的任何一个是时使用?Some(Event)
start
end
None
start
end
None
例如。
List(EventOpt(Some(1), None), EventOpt(None, Some(2)), EventOpt(Some(3), Some(4)))
=>
List(None, None, Some(Event(4, 3)))
通过这样做,它将允许flatMap
对最后一个列表进行简单的处理并省略None
s
解决方案
您不需要单独的flatMap
步骤,只需collect
您立即需要的:
eventOpts.collect { case EventOpt(Some(x), Some(y)) => Event(x, y) }
推荐阅读
- vb.net - System.Data.SQLite.SQLiteException:'SQLite 错误没有这样的列:aa'
- lets-encrypt - Traefik 让我们为多个域加密 ACME Route53
- c# - 从多个目标文件执行的单个 nuget.target 文件
- python - 将 astropy 表转换为字典列表
- css - 如何获取小部件的 CSS 属性?
- scala - Spark ForEachPartitionAsync 可以在工作节点上异步吗?
- angular - Item$.take 不是函数类型错误:item$.take 不是函数
- php - Laravel 5.6 - 当我使用 php artisan db:seed 时出现错误
- javascript - 将对象推送到数组
- javascript - 在javascript web3中将智能合约功能调用为aa字符串