1
我正在尝试学习如何使用折叠向左并向右折叠。这是我第一次学习函数式编程。我无法理解什么时候使用折叠,何时使用折叠。在我看来,很多时候这两种功能是可以互换的。例如(在Scala中)这两个函数:向左折叠并向右折叠
val nums = List(1, 2, 3, 4, 5)
val sum1 = nums.foldLeft(0) { (total, n) =>
total + n
}
val sum2 = nums.foldRight(0) {(total, n) =>
total + n
}
两者都产生相同的结果。为什么和什么时候我会选择一个或另一个?
现在尝试减去或做除法,看看你是否仍然得到相同的答案... – alfasin