高阶函数

17 Mar 2025 | 4 分钟阅读

作为 iOS 开发者,我们必须了解高阶函数。在代码中使用高阶函数可以提高代码的执行速度,并加快我们的开发技能。高阶函数可以定义为接受一个或多个函数作为参数并返回一个函数作为结果的函数。

在本文中,我们将讨论一些 swift 高阶函数,包括 forEach、map、CompactMap、flatMap、filter、reduce、sort 和 sorted。

forEach 函数

forEach 遍历数组的所有元素,并且不向编译器返回任何内容。考虑以下示例,我们使用 forEach 遍历一个整数数组。

它在控制台上打印以下输出。

10 20 21 65 32 21 
10 20 21 65 32 21

在第一个语句中,我们使用了 forEach() 的基本语法来打印数组整数。在第二个语句中,我们使用了 forEach() 的简写语法。forEach() 的工作方式类似于 for-in 循环。但是,我们不能使用 break 和 continue 语句来退出 forEach 中的闭包。

map

map 用于遍历所有数组元素,并在对每个元素执行一些操作后返回一个修改后的数组。考虑以下示例,我们有一个包含名字和姓氏的名称数组。我们使用 map 函数从每个名称中拆分姓氏,然后将其分配回名称。

它在控制台上打印以下输出。

输出

["John", "David", "Mike", "Will"]
["John", "David", "Mike", "Will"]

compactMap

compactMap 遍历数组并返回一个更新后的数组,该数组仅包含满足 compactMap 主体中编写的条件的元素。不满足条件的元素将从修改后的数组中排除。

考虑以下示例,我们有一个分数数组。 compactMap() 返回更新后的数组,包括那些可以转换为整数的分数。

它在控制台上打印以下输出。

["10", "20"]
["10", "20"]

flatMap

flatMap 函数用于将 2D 数组转换为 1D 数组。考虑以下示例。

它在控制台上打印以下输出。

["John", "Rockey", "David", "Smith", "Roy", "Max"]
["John", "Rockey", "David", "Smith", "Roy", "Max"]

filter

顾名思义,filter () 用于根据某些特定条件过滤数组。它遍历一个数组并返回一个修改后的数组,其中元素满足 filter 主体中编写的条件。

考虑以下示例,我们分别过滤数组中的所有偶数和奇数。

它在控制台上打印以下输出。

[2, 4, 6, 8, 10, 12]
[3, 6, 9, 12]

reduce

reduce () 用于遍历所有数组元素,并返回具有初始结果和当前结果的组合值的对象。考虑以下语法,在代码中使用 reduce。

考虑以下示例,我们通过将初始结果设置为 0 来计算数组中所有元素的总和。

Sort(by: ) 和 sorted(by: )

sort (by:) 和 sorted (by:) 函数用于根据某些特定条件对元素数组进行排序。但是,sorted (by:) 返回一个包含排序元素的新数组。考虑以下示例。

它在控制台上打印以下输出。

输出

[3, 10, 12, 14, 17, 19, 52, 61, 82]
[3, 10, 12, 14, 17, 19, 52, 61, 82]
[3, 10, 12, 14, 17, 19, 52, 61, 82]
[3, 10, 12, 14, 17, 19, 52, 61, 82]