函数式编程的fold函数很好用,但是下面的情况好像处理不了。
先介绍fold函数,看下fold函数处理数组求和的方式。
fold([1, 2], 0, (sum, x) => sum+x)
第一个参数,是要求和的数组。
第二个参数,是求和过程的初始值。
第三个参数,是累加过程的具体做法。是个函数,函数第一项是累加和,第二项是当前项。
如果要对数组内容求乘积,换初始值及累加过程,如下:
fold([1, 2], 1, (sum, x) => sum*x)
现在的问题是,如果当sum满足一定条件时,要结束累加过程,直接返回累加值怎么办?
例如:
fold([5, 6, 7], 1, (sum, x) => {
// sum<10,累加,否则,返回
if (sum<10) return sum+x
// else怎么写?返回sum还会继续啊
else return sum
}
有熟悉函数式编程的朋友,欢迎发言。