Ответ
Да, Swift поддерживает парадигму функционального программирования (ФП), являясь мультипарадигменным языком. Он предоставляет ключевые инструменты для написания кода в функциональном стиле.
Основные возможности ФП в Swift:
- Функции как объекты первого класса: Функции и замыкания можно присваивать переменным, передавать как аргументы и возвращать из других функций.
- Неизменяемость (Immutability): Ключевое слово
letпозволяет объявлять неизменяемые константы, что является важным принципом ФП. -
Функции высшего порядка для коллекций:
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 - Замыкания (Closures): Анонимные функции для инлайн-вычислений.
Почему это не "чистый" ФП язык? Swift не обязывает писать исключительно в функциональном стиле. У него также есть:
- Изменяемые переменные (
var). - Классы и ссылочные типы.
- Отсутствие встроенной оптимизации хвостовой рекурсии.
Вывод: Swift предоставляет мощные инструменты ФП, позволяя комбинировать их с объектно-ориентированным и протокольно-ориентированным подходами для наиболее эффективного решения задач.