Swift集合类型高阶函数(二)
flatMap/compactMap (swift 5.3)的使用
- 不返回nil
flatMap/compactMap处理返回后的数组不存在nil,同时它会把Optional解包
看下map和flatMap/compactMap实现方式如下
1 | let colors = ["red", "yellow", "green", ""] |
结果是
1 | [Optional(3), Optional(6), Optional(5), nil] |
flatMap/compactMap实现方式如下
- flatMap
1 | let colorsOfFlatMap = colors.flatMap { item ->Int? in |
- compactMap
1 | let colorsOfFlatMap = colors.compactMap { item ->Int? in |
这里之所以用compactMap,是因为'flatMap' is deprecated Please use compactMap(_:)
结果是
1 | [3, 6, 5] |
- 打开数组
compactMap能把(二维、N维)数组一同打开变成一个新的数组
1 | let array = [[1,2,3],[4,5,6],[7,8,9]] |
结果分别是
1 | [[1, 2, 3], [4, 5, 6], [7, 8, 9]] |
- 合并数组
compactMap能把不同的数组合并为一个数组,合并后的数组的个数是要合并两个数组个数的乘积
1 | let animals = ["cat", "dog", "pig"] |
结果是
1 | ["cat1", "dog1", "pig1", "cat2", "dog2", "pig2", "cat3", "dog3", "pig3"] |