Ответ
Функция высшего порядка — это функция, которая соответствует одному или двум условиям:
- Принимает одну или несколько функций (замыканий) в качестве аргументов.
- Возвращает функцию в качестве результата.
Это ключевая концепция функционального программирования, позволяющая создавать гибкие и переиспользуемые абстракции.
Примеры встроенных функций высшего порядка в Swift (для коллекций):
let numbers = [1, 2, 3, 4, 5]
// map — принимает функцию преобразования, возвращает новый массив.
let squared = numbers.map { $0 * $0 } // [1, 4, 9, 16, 25]
// filter — принимает функцию-предикат, возвращает отфильтрованный массив.
let evens = numbers.filter { $0 % 2 == 0 } // [2, 4]
// reduce — принимает начальное значение и функцию-комбинатор.
let sum = numbers.reduce(0, +) // 15
Пример кастомной функции высшего порядка:
// Функция, которая применяет другую функцию дважды.
func applyTwice(_ transform: (Int) -> Int, to value: Int) -> Int {
return transform(transform(value))
}
let double = { $0 * 2 }
let result = applyTwice(double, to: 5) // 20 (5 * 2 * 2)
Пример функции, возвращающей функцию:
// Функция создает и возвращает функцию-приветствие.
func greeter(for name: String) -> () -> String {
return { "Hello, (name)!" }
}
let greetAlice = greeter(for: "Alice")
print(greetAlice()) // "Hello, Alice!"
Преимущества: повышение уровня абстракции, устранение дублирования кода, удобство работы с асинхронными операциями (например, completion handlers).