Ответ
Это методы высшего порядка для преобразования и фильтрации последовательностей.
-
map(_:)— Трансформирует каждый элемент, возвращая массив результатов того же размера.let numbers = [1, 2, 3] let squared = numbers.map { $0 * $0 } // [1, 4, 9] -
flatMap(_:)(для последовательностей) — Трансформирует и затем «сплющивает» (объединяет) результат, если преобразование возвращает последовательность.let pairs = [[1, 2], [3, 4]] let flattened = pairs.flatMap { $0 } // [1, 2, 3, 4] -
compactMap(_:)— Трансформирует, отфильтровываяnilзначения из результата. Размер итогового массива может быть меньше.let strings = ["1", "2", "three"] let numbers = strings.compactMap { Int($0) } // [1, 2] -
filter(_:)— Возвращает только те элементы, которые удовлетворяют заданному условию (предикату).let evens = numbers.filter { $0 % 2 == 0 } // [2]
| Краткое сравнение: | Метод | Вход | Выход | Ключевое действие |
|---|---|---|---|---|
map |
[T] |
[U] |
1-to-1 преобразование | |
flatMap |
[T] |
[U] |
Преобразование + слияние вложенных коллекций | |
compactMap |
[T] |
[U] |
Преобразование + удаление nil |
|
filter |
[T] |
[T] |
Отбор по условию |