Swift高阶函数

200 阅读3分钟

作为一个OC时代的残党,在最早进行swift开发时,更多的像是一种语言的转换,单纯的将OC的语言转换为swift的语言,而忽略了swift许多优秀的特性。例如常见的swift的函数,它们能帮助我们更快捷简便的处理一些逻辑。

Map函数

使用map函数的便利之处在于它遍历一个集合对象,并将相同的操作应用于该对象的每一个元素。map函说返回了一个包函该集合对象每一个元素进行相同的操作,转化后生成的新数值数组。 使用map的便利之处在于,它遍历一个集合对象,并可以将相同的操作应用于该对象的每一个元素。map函数返回了一个包含对该集合对象每一个元素进行相同操作、转换之后生成的新数值的数组。(就等同于我们把一个数组中每个元素都经历了一个特殊的管道,所有的元素都会得到相关的变换。)

上图实例表示我们将数组的每个元素+5,等到一个新的数组,我们可以抛弃繁琐的循环,通过map函数直接获的结果。

Filter函数

使用filter函数的作用是遍历该集合,然后将集合中符合某些特定条件的元素组成新的数组,并返回新的数组。(如果说map函数像一个格式化工具,那filter函数更像一张渔网,把大于网眼的数据留住,小于网眼的移出)

如图中所示,我们把小于3的元素留下,大于3的移出数据,得到一个新的元素数组。

Reduce函数

Reduce函数需要传入两个参数值,一个初始化值,一个函数闭包,reduce函数数组的元素包括初始值进行累加操作,如果是字符串则拼接。

FlatMap函数

flatMap函数的作用就是接收一个闭包作为规则,自动遍历集合的每一个元素,使用闭包规则去处理这些元素,将结果放进一个新的集合里面,可以出现数组将维。并且会自动过滤nil。(该函数在swift4.1后被废弃,由compactMap替代)

总结如下:以后在使用swift编码的过程中,当你意识到自己在对一个集合对象进行遍历操作时,你该思考一下是否可以使用map, filter或者reduce函数来替代。 以下是总结了以下map, filter, reduce的特性, map返回了一个结果集,该集合中包含的所有元素是来于对源数组中每一个元素进行相同的转换之后形成的新元素。 filter返回一个结果集,该集合包含的元素是源数组中的每一个符合筛选条件的元素。 reduce返回一个值,该值是对初始值和集合中的每个元素调用闭包中相同的操作生成的。