【发布时间】:2011-10-11 17:09:26
【问题描述】:
我经常需要对 Scala 中数字列表的转换求和。当然,一种方法是:
list.map(transform(_)).sum
但是,当不需要创建内存时,这会创建内存。另一种方法是折叠列表。
list.foldLeft(0.0) { (total, x) => total + f(x) }
我发现第一个表达式比第二个表达式更容易编写。有没有一种我可以使用的方法,它具有第一种的易用性和第二种的效率?还是我最好编写自己的隐式方法?
list.mapSum(transform(_))
【问题讨论】:
-
仅相切相关,但如果对 集合 求和变换时要小心,例如:
Set(1,2,3).map(_ % 2).sum是1,而不是2。我最近被setOfPlayers.map(_.salary).sum之类的东西咬了...
标签: scala