Ответ
В Swift функция первого класса — это функция, которую можно:
- Присвоить переменной или константе.
- Передать в качестве аргумента другой функции.
- Вернуть как результат из функции.
Это свойство делает функции и замыкания полноправными типами данных, что является основой функционального программирования.
Примеры:
// 1. Присвоение функции переменной
let sayHello = { print("Hello!") }
sayHello() // Вывод: Hello!
// 2. Передача функции как аргумента
func execute(times: Int, task: () -> Void) {
for _ in 0..<times { task() }
}
execute(times: 3, task: sayHello)
// Вывод:
// Hello!
// Hello!
// Hello!
// 3. Возврат функции из функции
func multiplier(for factor: Int) -> (Int) -> Int {
return { number in
return number * factor
}
}
let double = multiplier(for: 2)
print(double(7)) // Вывод: 14
Практическое значение: Это позволяет создавать гибкие абстракции, такие как обработчики завершения (completion handlers), функции высшего порядка (map, filter, reduce) и конфигурируемое поведение.