加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

巧妙地处理Scala中的Option [T]

发布时间:2020-12-16 18:44:25 所属栏目:安全 来源:网络整理
导读:我正在使用 Scala开发一些代码,我正在尝试巧妙地解决包含一些Option [T]的集合之间的基本转换. 假设我们有以下列表 val list: List[(A,Option[B])] = // Initialization stuff 我们想要将转换应用于列表以获取以下列表 val transformed: List[(B,A)] 对于评
我正在使用 Scala开发一些代码,我正在尝试巧妙地解决包含一些Option [T]的集合之间的基本转换.

假设我们有以下列表

val list: List[(A,Option[B])] = // Initialization stuff

我们想要将转换应用于列表以获取以下列表

val transformed: List[(B,A)]

对于评估为某些[B]的所有选项[B].我发现这样做的最好方法是应用以下转换链:

val transformed = 
  list.filter(_.isDefined)
      .map { case (a,Some(b)) => (b,a) }

但是我觉得我错过了什么.哪个是处理Option [T]的最佳方式?

解决方法

你可以使用收集:

val transformed = list.collect {
  case (a,a)
}

收集,如文档中所定义:

Builds a new collection by applying a partial function to all elements of this list on which the function is defined.

意思是,它只为符合部分函数中定义的任何情况的元素生成结果.我喜欢把它想象成一个组合过滤器和地图.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读