具有缺失值的列表上的算术运算

我正在尝试对可能包含缺失值的列表进行一些算术运算.

到目前为止,我用Option [Int]代表我的列表:

val mylist=List( Option(4), Option(8), None )

通过这种表示,我可以轻松地在列表上应用一个函数(比如乘以2):

scala> mylist.map(_.map(_*2))
res2: List[Option[Int]] = List(Some(8), Some(16), None)

然而,这看起来比它需要的更复杂,所以我想知道我是否遗漏了一些东西.

另外,我无法弄清楚如何写总和.我想应该可以用(大)减少表达式……

所以,我想知道是否:

> List [Option [Int]]是这个用例的一个很好的表示
> mylist.map(_.map(_ * 2))是映射的最佳方式
>有一个简单的方法来做一笔钱吗?

最佳答案 好吧,这不是我自己使用的模式,但如果值可以“缺失”那么选项是合适的.但列表可能不是.在列表中,位置通常不是您应该依赖的位置,因为它不是随机访问.也许Vector会更好,或者你需要考虑一种更好的方法来建模你的问题,即不是一个缺少值的列表.

你可以使用for-expressions很好地处理Option:

for (o <- mylist; x <- o) yield x * 2

或者压扁清单:

mylist.flatten.map(_ * 2)

总结一下:

mylist.flatten.sum
点赞