在 Swift 中,函数是一等公民,这意味着函数可以像变量一样被传递、返回、存储,也可以作为参数传递给其他函数。函数式编程强调函数的不可变性、无副作用和高阶函数的使用。以下是一些关于 Swift 函数式编程中常用的函数的介绍:

1. map

map 函数用于对集合中的每个元素应用相同的操作,并返回一个新的集合。
let numbers = [1, 2, 3, 4, 5]
let squaredNumbers = numbers.map { $0 * $0 }
print(squaredNumbers)  // 输出: [1, 4, 9, 16, 25]

2. filter

filter 函数用于过滤集合中的元素,只保留满足条件的元素。
let numbers = [1, 2, 3, 4, 5]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers)  // 输出: [2, 4]

3. reduce

reduce 函数用于将集合的所有元素组合为单一的结果。它接受一个初始值和一个闭包,闭包定义了如何将元素累积到结果中。
let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0) { $0 + $1 }
print(sum)  // 输出: 15

4. flatMap

flatMap 函数用于将数组中的元素映射到另一个数组,并将结果展平成一个数组。
let nestedArray = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
let flatArray = nestedArray.flatMap { $0 }
print(flatArray)  // 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9]

5. sorted

sorted 函数用于对数组进行排序。它可以接受一个闭包,定义了排序的规则。
let numbers = [5, 2, 8, 1, 7]
let sortedNumbers = numbers.sorted { $0 < $1 }
print(sortedNumbers)  // 输出: [1, 2, 5, 7, 8]

6. compactMap

compactMap 函数用于将数组中的可选值去掉,并将非空值映射到一个新的数组。
let optionalNumbers: [Int?] = [1, nil, 3, nil, 5]
let nonOptionalNumbers = optionalNumbers.compactMap { $0 }
print(nonOptionalNumbers)  // 输出: [1, 3, 5]

7. forEach

forEach 函数用于对数组中的每个元素执行一个操作。
let numbers = [1, 2, 3, 4, 5]
numbers.forEach { print($0) }
// 输出:
// 1
// 2
// 3
// 4
// 5

这些函数是 Swift 中进行函数式编程时常用的一些高阶函数。它们可以帮助你编写更简洁、清晰和功能性的代码。当你逐渐熟悉这些函数并深入理解函数式编程的概念时,你将能够更好地利用 Swift 的强大功能。


转载请注明出处:http://www.zyzy.cn/article/detail/6866/Swift