我正在使用Scala开发一些代码,我正在尝试巧妙地解决包含一些代码的集合之间的基本转换Option[T].
假设我们有以下列表
val list: List[(A, Option[B])] = // Initialization stuff
Run Code Online (Sandbox Code Playgroud)
我们想要应用转换list来获取以下列表
val transformed: List[(B, A)]
Run Code Online (Sandbox Code Playgroud)
对于所有Option[B]评价的人来说Some[B].我发现这样做的最好方法是应用以下转换链:
val transformed =
list.filter(_.isDefined)
.map { case (a, Some(b)) => (b, a) }
Run Code Online (Sandbox Code Playgroud)
但是我觉得我错过了什么.处理Option[T]s 的最佳方法是哪种?
Zol*_*tán 13
你可以使用collect:
val transformed = list.collect {
case (a, Some(b)) => (b, a)
}
Run Code Online (Sandbox Code Playgroud)
收集,如文档中所定义:
通过将部分函数应用于定义函数的此列表的所有元素来构建新集合.
意思是,它只为符合部分函数中定义的任何情况的元素生成结果.我喜欢将它视为一个组合filter而且map.
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |