本文主要是介绍Swift - 高阶函数介绍(map、flatMap、filter、reduce) 原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
http://www.hangge.com/blog/cache/detail_1827.html
Swift 提供了如下几个高阶函数:map、flatMap、filter、reduce。使用高阶函数进行函数式编程不仅可以简化我们的代码,而且当数据比较大的时候,高阶函数会比传统实现更快,因为它可以并行执行(如运行在多核上)。
一、map 函数
1,方法介绍
map 方法获取一个闭包表达式作为其唯一参数。 数组中的每一个元素调用一次该闭包函数,并返回该元素所映射的值。
简单说就是数组中每个元素通过某个方法进行转换,最后返回一个新的数组。
2,使用样例
(1)下面将 Int 类型数组(各个商品的金额),转换成 String 类型的数组(在金额前加上 $ 符号)
1 2 3 |
|
(2)对一个数组里面的数据进行平方操作
1 2 3 |
|
二、flatMap 函数
1,方法介绍
flatMap 方法同 map 方法比较类似,只不过它返回后的数组中不存在 nil(自动把 nil 给剔除掉),同时它会把 Optional 解包。
2,使用样例
(1)下面比较 map 和 flatMap 这两个方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
(2)flatMap 还能把数组中存有数组的数组(二维数组、N维数组)一同打开变成一个新的数组。
1 2 3 |
|
三、filter 函数
1,方法介绍
filter 方法用于过滤元素,即筛选出数组元素中满足某种条件的元素。
2,使用样例
(1)筛选出金额大于 25 的元素。
1 2 3 |
|
四、reduce 函数
1,方法介绍
reduce 方法把数组元素组合计算为一个值,并且会接受一个初始值,这个初始值的类型可以和数组元素类型不同。
2,使用样例
(1)将数组中的金额相加,计算总和。
1 2 3 |
|
注意:上面计算总数代码还可以简化成如下代码:
1 |
|
(2)将数组转成字符串,每个元素用顿号(、)隔开。
1 2 3 4 5 6 7 8 |
|
五、高阶函数的组合使用、链式调用
1,组合使用
(1)flatMap 配合 filter 将多维整型数组里面的偶数筛选出来并且组合成了一个一维数组。
1 2 3 4 5 |
|
(2)map 配合 reduce 计算二维数组里每个分组的总和。
1 2 3 |
|
2,链式组合
(1)将数组中大于 7 的所有数字进行求和操作。
1 2 |
|
(2)对某一个数组里面的数字进行平方操作然后再筛选出偶数值。
1 2 |
|
原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_1827.html
这篇关于Swift - 高阶函数介绍(map、flatMap、filter、reduce) 原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!