Swift 的高阶函数是可以将函数作为参数或返回值的函数,广泛用于提升代码的可读性和简洁性。Swift 的标准库为集合类型(如 Array, Set, 和 Dictionary)提供了一些常用的高阶函数,主要包括以下几种:
1、map:将集合中的每个元素通过闭包进行变换,生成一个新的集合。
代码示例:
let numbers = [1, 2, 3, 4]
let squaredNumbers = numbers.map { $0 * $0 }
// [1, 4, 9, 16]
2、filter:根据条件筛选集合中的元素,返回一个符合条件的子集合。代码示例: 代码示例:
let numbers = [1, 2, 3, 4]
// 删选偶数
let evenNumbers = numbers.filter { $0 % 2 == 0 }
// [2, 4]
3、reduce:将集合中的所有元素组合成一个值(如求和、求积、拼接等)。代码示例:
let numbers = [1, 2, 3, 4]
let sum = numbers.reduce(0) { $0 + $1 } // 累计求和
// 10
4、flatMap:展开集合的嵌套结构,并对元素进行变换。代码示例:
let nestedArray = [[1, 2, 3], [4, 5], [6]]
// 对二维数组进行平铺
let flattenedArray = nestedArray.flatMap { $0 }
// [1, 2, 3, 4, 5, 6]
5、 compactMap:与 flatMap 类似,但主要用于移除 nil 值并解包非 nil 值。代码示例:
let optionalStrings = ["1", "2", "Swift", "4"]
let numbers = optionalStrings.compactMap { Int($0) }
// [1, 2, 4]
6、 sorted:对集合中的元素排序,默认按升序,也可通过闭包指定自定义排序规则。代码示例:
let numbers = [3, 1, 4, 2]
let sortedNumbers = numbers.sorted()
// [1, 2, 3, 4]
let descendingNumbers = numbers.sorted { $0 > $1 }
// [4, 3, 2, 1]