Что такое ArraySlice в Swift и каковы его особенности?

«Что такое ArraySlice в Swift и каковы его особенности?» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ArraySlice — это представление (view) для непрерывного поддиапазона элементов массива (Array). Он не создает независимую копию данных, а делит память с исходным массивом, что делает операции срезами эффективными по памяти и времени.

Ключевые особенности:

  • Эффективность: Создание ArraySlice — операция O(1), так как не копирует элементы.
  • Индексация: Сохраняет индексы исходного массива. slice.startIndex равен начальному индексу среза в оригинальном массиве.
  • Время жизни: ArraySlice поддерживает исходный массив в памяти. Длительное хранение среза может продлить жизнь всему исходному массиву.

Пример:

let numbers = [10, 20, 30, 40, 50]
let slice: ArraySlice<Int> = numbers[1...3] // Срез элементов 20, 30, 40
print(slice) // [20, 30, 40]
print(slice.startIndex) // 1 (индекс в исходном массиве `numbers`)

Рекомендация по использованию: ArraySlice идеален для локальной работы с частью массива внутри функции или алгоритма. Для долгосрочного хранения результата лучше создать новый Array из среза: Array(slice).