Scala将循环可变聚合更改为不可变

时间:2014-06-17 14:13:39

标签: scala functional-programming immutability

如果我有这个简单的循环,那就是势在必行的风格

val num = 100
var result = 0.0
for (i <- 0 until num) {
    result += 4.0 * (1 - (i % 2) * 2) / (2 * i + 1)
}

如何将其更改为不可变且功能正常?

2 个答案:

答案 0 :(得分:8)

您有一个初始值,您迭代集合值并对每个项目应用操作以最终返回一个 >单值。

这看起来很像可以变成折叠

答案 1 :(得分:0)

另一种采用并行集合的方法

(1 to 100).par.map { i => 4.0 * (1 - (i % 2) * 2) / (2 * i + 1) }.sum