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

Scala将循环可变聚合更改为不可变,scala,functional-programming,immutability,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) } val num=100 var结果=0.0 对于(i您有一个初始值,您迭代一组值,并对每个项应用一个操作,最终返回一个值 这看起来很像可以变成一个折叠的东西另一种方法,有一个平行的集合 (1 to 100).par.map { i =

如果我有这个简单的循环,它是命令式的

val num = 100
var result = 0.0
for (i <- 0 until num) {
    result += 4.0 * (1 - (i % 2) * 2) / (2 * i + 1)
}
val num=100
var结果=0.0
对于(i您有一个初始值,您迭代一组值,并对每个项应用一个操作,最终返回一个值


这看起来很像可以变成一个折叠的东西

另一种方法,有一个平行的集合

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

在这里询问之前,您是否尝试过自己解决这个问题?在询问答案之前,请粘贴您尝试的代码片段。我会给您一个提示,您正在寻找一个
折叠
可能值得提供进行折叠的代码,以防他以前从未见过折叠:
(0直到num)。foldLeft(0.0){(result,I)=>result+4.0*(1-(i%2)*2)/(2*i+1)}