如果我有這個簡單的循環是勢在必行的風格斯卡拉變化for循環可變聚集到不可變
val num = 100
var result = 0.0
for (i <- 0 until num) {
result += 4.0 * (1 - (i % 2) * 2)/(2 * i + 1)
}
我將如何將其更改爲不可變的功能?
如果我有這個簡單的循環是勢在必行的風格斯卡拉變化for循環可變聚集到不可變
val num = 100
var result = 0.0
for (i <- 0 until num) {
result += 4.0 * (1 - (i % 2) * 2)/(2 * i + 1)
}
我將如何將其更改爲不可變的功能?
你有一個初始值,你遍歷值的集合和應用的操作每個項目最終能夠返回一個單值。
這看起來很像是什麼東西,可以變成折。
可能是值得提供不折疊的代碼,如果他從來沒有見過的摺疊:'(0到NUM).foldLeft(0.0){ (result,i)=> result + 4.0 *(1-(i%2)* 2)/(2 * i + 1)}'。 – KChaloux
另一種方法,與並行採集,
(1 to 100).par.map { i => 4.0 * (1 - (i % 2) * 2)/(2 * i + 1) }.sum
你試過問這裏之前,這個你自己解決?在詢問答案之前,粘貼您嘗試的代碼片段。我給你一個提示,你正在尋找一個'fold' – cdk