FlatMap
FlatMap是函数式编程中的另外一个用法,主要是用于处理多组数据合并一组,和归约是不同的
方法 | 作用 |
---|---|
Reduce | 一组数据里所有的元素合并成一个元素 |
FlatMap | 多组数据里的所有元素合并成一组数据 |
Swift中的FlatMap
Swift中有两个FlatMap方法,可以接收两种不同的Lambda表达式
| lambda | 重点 | 文档 |
| :————- | :————- |
| transform: Element throws -> ElementOfResult? | 返回值为Optional的ElementOfResult | ElementOfResult |
| transform: Element throws -> Sequence | 返回值为Sequence,不为Optional |Sequence |
根据其描述不同
1 | ElementOfResult: Returns an array containing the non-nil results of calling the given transformation with each element of this sequence. |
讲人话就是
- ElementOfResult不改变内部元素,仅仅删除掉nil的选项
- Sequence把所有元素内部的元素也进行Flat(压平,合并到一起,concatenated),并且不允许存在nil,必须把nil替换为默认值
1 | let couple = [[1,2,3],[4,5,6], nil, [8,9]] |
更复杂的情况
如果在子元素的数组里也存在nil,则可以把两个flatMap方法结合起来用
1 | let complex = [[1,2,3],[4,5,6], nil, [8,9,nil]] |