简述Swift 中高阶函数有哪些? ?
参考答案:
在 Swift 中,高阶函数(Higher-Order Functions)是指那些接受函数作为参数或者返回函数的函数。高阶函数在函数式编程中非常常见,它们提供了一种灵活和强大的方式来操作和处理函数。
以下是一些 Swift 中常见的高阶函数示例:
- map(_:):这是一个高阶函数,用于对数组或集合中的每个元素应用一个指定的转换函数,并返回一个新的数组或集合,其中包含应用转换后的结果。
let numbers = [1, 2, 3, 4, 5]
let squaredNumbers = numbers.map { $0 * $0 }
print(squaredNumbers) // 输出: [1, 4, 9, 16, 25]
- filter(_:):这也是一个高阶函数,用于根据指定的条件函数过滤数组或集合中的元素,并返回一个新的数组或集合,其中包含满足条件的元素。
let numbers = [1, 2, 3, 4, 5]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers) // 输出: [2, 4]
- reduce(::):这是一个高阶函数,用于将数组或集合中的元素组合成一个单一的值,通过应用一个结合函数来实现。
let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0, { $0 + $1 })
print(sum) // 输出: 15
- sorted(by:):这也是一个高阶函数,用于对数组或集合进行排序。你可以传递一个比较函数来定义排序的顺序。
let names = ["Alice", "Bob", "Charlie"]
let sortedNames = names.sorted { $0 < $1 }
print(sortedNames) // 输出: ["Alice", "Bob", "Charlie"]
- compactMap(_:):这个函数类似于
map(_:)
,但它还会过滤掉转换结果为nil
的元素。常用于从可选值数组中提取非nil
值。
let optionalNumbers: [Int?] = [1, nil, 3, 4, nil, 5]
let numbers = optionalNumbers.compactMap { $0 }
print(numbers) // 输出: [1, 3, 4, 5]
- 自定义高阶函数:你也可以创建自己的高阶函数,接受函数作为参数或返回函数。这提供了极大的灵活性和可重用性。
func greet(_ name: String, withGreeting: @escaping (String) -> String) -> String {
return withGreeting(name)
}
let helloGreeting: (String) -> String = { "Hello, \($0)!" }
let goodbyeGreeting: (String) -> String = { "Goodbye, \($0)!" }
print(greet("Alice", withGreeting: helloGreeting)) // 输出: "Hello, Alice!"
print(greet("Bob", withGreeting: goodbyeGreeting)) // 输出: "Goodbye, Bob!"
高阶函数是 Swift 编程语言中非常强大的工具,它们使得代码更加灵活、可重用和模块化。