转换Seq of Tuples的最短方法是什么,例如:
val xs : Seq[(Long,Option[Double])] = Seq((1L,None),(2L,Some(2.0)),(3L,None))
Run Code Online (Sandbox Code Playgroud)
到Seq[(Long,Double)]通过除去诺内斯
我用过这两个
xs.filter(_._2.isDefined).map{case (i,x) => (i,x.get)}
Run Code Online (Sandbox Code Playgroud)
和
xs.flatMap{
case (i,Some(x)) => Some(i,x)
case _ => None
}
Run Code Online (Sandbox Code Playgroud)
但是想知道是否有更短的路.对于Seq[Option[Double]]我会做flatten...但这对嵌套选项不起作用.
您可以使用collect哪个丢弃不属于您案例的内容:
xs.collect{ case (i, Some(x)) => (i, x) }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,由于case (i, None)未使用,这些情况将被过滤掉.
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |