高阶函数map、flatMap、CompactMap 、filter 、reduce的区别?
时间: 2023-11-03 16:04:50 浏览: 116
简单了解python filter、map、reduce的区别
5星 · 资源好评率100%
这些函数都是用于处理集合类型的函数,它们的区别如下:
1. `map`:将一个集合中的每个元素都应用一个函数,返回一个新的集合,这个新的集合中的元素与原集合中的元素一一对应,但是元素的值被替换为应用函数后的值。例如,`[1, 2, 3].map { $0 * 2 }` 返回 `[2, 4, 6]`。
2. `flatMap`:将一个集合中的每个元素都应用一个函数,返回一个新的集合,这个新的集合中的元素是一个序列,将这些序列中的元素展开成为新的集合的元素。例如,`[[1, 2, 3], [4, 5, 6]].flatMap { $0 }` 返回 `[1, 2, 3, 4, 5, 6]`。
3. `compactMap`:将一个集合中的每个元素都应用一个函数,返回一个新的集合,这个新的集合中的元素是应用函数后的非 nil 值。例如,`["1", "2", "3", "four"].compactMap { Int($0) }` 返回 `[1, 2, 3]`。
4. `filter`:对一个集合中的每个元素应用一个条件,返回一个新的集合,这个新的集合中的元素是满足条件的原集合中的元素。例如,`[1, 2, 3, 4, 5].filter { $0 > 3 }` 返回 `[4, 5]`。
5. `reduce`:对一个集合中的所有元素应用一个函数,返回一个单一的值。这个函数接收两个参数:一个累加器和一个集合中的元素,并返回一个新的累加器。这个函数被应用到集合中的每个元素,最终返回最终的累加器的值。例如,`[1, 2, 3, 4, 5].reduce(0) { $0 + $1 }` 返回 `15`。
阅读全文