本文主要是介绍[Kotlin 开发] reduce和fold的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.先写个小例子
reduce
println((0..5).reduce { acc, i ->Log.e("reduce ====","acc:"+acc+" i:" + i)acc + i
})// 输出结果:
// E/reduce ====: acc:0 i:1
// E/reduce ====: acc:1 i:2
// E/reduce ====: acc:3 i:3
// E/reduce ====: acc:6 i:4
// E/reduce ====: acc:10 i:5
// I/System.out: 15
fold
println((0..5).fold(1) { acc, i ->Log.e("fold ====","acc:"+acc+" i:" + i)acc + i
})// 输出结果:
// E/fold ====: acc:1 i:0
// E/fold ====: acc:1 i:1
// E/fold ====: acc:2 i:2
// E/fold ====: acc:4 i:3
// E/fold ====: acc:7 i:4
// E/fold ====: acc:11 i:5
// I/System.out: 16
println((0..5).fold(" ") { acc, i ->acc + i
})// 输入结果:
// I/System.out: 012345
2.查找区别
看功能fold和reduce是一样的,都是累加器。
不同的是:
1. 参数不同
fold可以设置一个参数,把这个参数当作初始值。从初始值开始累加。
reduce没有初始值
2. 返回类型不同
fold返回类型,是根据参数类型而定。
reduce返回类型,是根据迭代值类型而定。
这篇关于[Kotlin 开发] reduce和fold的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!