Aja*_*jay 4 scala scala-2.8 scala-collections
这里总有新手问题...今天在尝试计算整数列表的总和(实际上是BitSet)时,我遇到了溢出场景并注意到(sum/product)的返回类型是Int.Range/List中是否有任何方法可以总结或说出将所有值乘以Long?
val x = 1 to Integer.MaxValue
println(x.sum) //prints -1453759936
Run Code Online (Sandbox Code Playgroud)
谢谢
将元素转换为Long(或BigInt应该去那么远),同时求和:
x.view.map(_.toLong).sum
Run Code Online (Sandbox Code Playgroud)
你也可以回去折叠
x.foldLeft(0L)(_ + _)
Run Code Online (Sandbox Code Playgroud)
(注意:如果你在一个范围内求和,也许最好做一点数学,但我明白这不是你所做的事情)