Kotlin中的fold和reduce有什么区别?
需要传入一个初始值,当集合为空时直接返回初始值,当集合不为空时,第一轮执行的两个参数分别是初始值和集合中的第一个元素,比如下面这段代码。
listOf(1, 2, 3).fold(0) { sum, element -> sum + element }
第一轮时sum和element分别是0和1。
没有初始值,如果集合为空会抛出异常,当集合不为空时,第一轮执行的两个参数分别是集合中的第一个和第二个元素,比如下面这段代码。
listOf(1, 2, 3).reduce { sum, element -> sum + element }
第一轮时sum和element分别是1和2。
内容