Swift 中常用高阶函数介绍

在 Swift 编程语言里,有一系列非常实用的高阶函数,它们能够帮助开发者更高效、简洁地处理集合数据。除了 reduce 方法,mapfiltercompactMapflatMap 等方法在集合处理中也扮演着重要角色。下面将详细介绍这些方法的特点和使用示例。

1. map 方法

map 方法用于对集合中的每个元素应用给定的转换闭包,然后返回一个包含转换结果的新集合。

示例代码:

1
2
3
let numbers = [1, 2, 3, 4, 5]
let squaredNumbers = numbers.map { $0 * $0 }
print(squaredNumbers) // 输出: [1, 4, 9, 16, 25]

在这个例子中,map 方法对 numbers 数组里的每个元素进行平方操作,然后返回一个包含平方结果的新数组。

2. filter 方法

filter 方法用于筛选出集合中满足指定条件的元素,然后返回一个包含这些元素的新集合。

示例代码:

1
2
3
let numbers = [1, 2, 3, 4, 5]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers) // 输出: [2, 4]

这里,filter 方法筛选出 numbers 数组中所有的偶数,然后返回一个只包含偶数的新数组。

3. compactMap 方法

compactMap 方法用于对集合中的每个元素应用给定的转换闭包,并且会过滤掉结果为 nil 的元素,最后返回一个不包含 nil 值的新集合。

示例代码:

1
2
3
let strings = ["1", "two", "3", "four"]
let numbers = strings.compactMap { Int($0) }
print(numbers) // 输出: [1, 3]

在这个例子中,compactMap 方法尝试把 strings 数组中的每个字符串转换为整数,会过滤掉无法转换的字符串,最终返回一个只包含有效整数的新数组。

4. flatMap 方法

flatMap 方法可以将嵌套的集合展开成一个一维集合。在 Swift 中,flatMap 有不同的使用场景。

示例代码:

1
2
3
let nestedArray = [[1, 2], [3, 4], [5, 6]]
let flattenedArray = nestedArray.flatMap { $0 }
print(flattenedArray) // 输出: [1, 2, 3, 4, 5, 6]

这里,flatMap 方法把嵌套数组 nestedArray 展开成了一个一维数组。

总结

  • map:对集合元素进行转换操作。
  • filter:筛选出满足条件的元素。
  • compactMap:进行转换并过滤掉 nil 值。
  • flatMap:展开嵌套集合。

这些高阶函数都是处理集合时的实用工具,熟练掌握它们可以让代码更加简洁、易读和高效,提升开发效率和代码质量。