Ответ
Часто используемые функции высшего порядка: map, filter, reduce, compactMap, flatMap, forEach, sorted, contains, first(where:), allSatisfy.
Ключевые принципы:
- Чистота: Функции не имеют побочных эффектов (за исключением
forEach). - Цепочки вызовов (Chaining): Результат одной функции можно передать в следующую.
- Ленивые вычисления: Использование
lazyдля обработки больших коллекций без создания промежуточных массивов.
Примеры использования:
let numbers = [1, 2, 3, nil, 5]
// `compactMap` игнорирует nil, `map` преобразует элементы
let doubledValidNumbers = numbers.compactMap { $0 }.map { $0 * 2 } // [2, 4, 6, 10]
// `filter` для выборки по условию
let evenNumbers = numbers.compactMap { $0 }.filter { $0 % 2 == 0 } // [2]
// `reduce` для агрегации (нахождение суммы)
let total = numbers.reduce(0) { partialResult, number in
return partialResult + (number ?? 0)
} // 11
// Цепочка вызовов: фильтрация, преобразование, сортировка
let processed = numbers
.compactMap { $0 }
.filter { $0 > 1 }
.map { $0 * $0 }
.sorted(by: >) // [25, 9, 4]