考虑这个类:
case class Person(val firstName: String, val lastName: String, age: Int)
val persons = Person("Jane", "Doe", 42) :: Person("John", "Doe", 45) ::
Person("Joe", "Doe", 43) :: Person("Doug", "Don", 65) ::
Person("Darius", "Don", 24) :: Person("Dora", "Don", 20) ::
Person("Dane", "Dons", 29) :: Nil
为了得到所有人的年龄总和,我可以编写如下代码:
persons.foldLeft(0)(_ + _.age)
但是如果我想使用sum
,我需要先映射值,代码如下所示:
persons.map(_.age).sum
如何在不创建一些中间集合的情况下使用该sum
方法?
(我知道这样的“优化”很可能不会在不紧密循环中运行时没有任何真正的性能差异,而且我也知道惰性视图等等。)
是否有可能有类似的代码
persons.sum(_.age)
做什么foldLeft
/做什么reduceLeft
?