Можете объяснить различия между операциями flatMap и compactMap в языках программирования?

В языках программирования, таких как Swift, flatMap и compactMap используются для преобразования коллекций, но имеют разные цели:

Короткий ответ

Что ответить на собеседовании

В языках программирования, таких как Swift, flatMap и compactMap используются для преобразования коллекций, но имеют разные цели:

Подробный разбор

Ответ с пояснениями

В языках программирования, таких как Swift, flatMap и compactMap используются для преобразования коллекций, но имеют разные цели:

  • flatMap применяется для преобразования элементов коллекции в коллекции и затем "расплющивает" (флэтит) результат в один уровень. Например, если каждый элемент преобразуется в массив, flatMap объединит все эти массивы в один.
  • compactMap преобразует элементы коллекции, одновременно отбрасывая все nil (или отсутствующие) значения. Это удобно, когда преобразование может вернуть опциональное значение, и нужно получить массив только с непустыми результатами.

Пример в Swift:

let numbers = ["1", "2", "three", "4"]

// compactMap преобразует строки в Int, отбрасывая нечисловые
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

// flatMap с массивами
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]

Таким образом, compactMap фильтрует и преобразует, а flatMap объединяет вложенные коллекции после преобразования.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее