假设我有两个可选的 Ints(都可以是 Some 或 None):
val one : Option[Int] = Some(1)
val two : Option[Int] = Some(2)
我的问题如下:是否有任何智能方法可以使用 Scalas 出色的收集方法对它们进行求和?我意识到我可以将它们合并到一个集合中,flatten
并reduceLeftOption
像这样使用:
(one :: two :: Nil).flatten.reduceLeftOption(_ + _) // Some(3)
但是,上述解决方案意味着创建一个新系列,并生活在一个富裕而发达的世界中,这需要我可能沉浸在所有其他第一世界活动中的时间。在一个编程对像我们这样的程序员来说越来越奢侈的世界里,必须有一个或多个豪华的第一世界答案,对吧?
编辑:所以为了说明问题,这里有一些例子:
如果one = Some(1)
并且two = Some(2)
我们应该有 Some(3)
如果我们应该有 Some(1 one = Some(1)
)two = None
如果我们应该有 Some(2 one = None
)two = Some(2)
如果两者都one
和two
是None
我们应该没有,因为两者one
都two
不能正确求和。
希望澄清事情:-)