0Pricing
Swift Academy · Урок

Создание срезов с помощью диапазонов

Извлекайте подпоследовательности без копирования.

«Создание срезов с помощью диапазонов» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.

Индексация с помощью диапазона

Если обратиться к массиву по диапазону, Swift не копирует элементы в новый массив. Вместо этого возвращается ArraySlice, использующий общее хранилище с исходным массивом.

let numbers = [10, 20, 30, 40, 50]
let slice = numbers[1..<4]
print(slice)
print(type(of: slice))

Полуоткрытый диапазон

Оператор ..< создаёт полуоткрытый диапазон. 1..<4 включает индексы 1, 2 и 3, но не включает 4.

let letters = ["a", "b", "c", "d", "e"]
let middle = letters[1..<4]
print(middle)

Получение среза замкнутого диапазона

Используйте ... для замкнутого диапазона, если нужно включить верхнюю границу. 1...3 охватывает индексы 1, 2 и 3.

let scores = [88, 92, 75, 64, 99]
let closed = scores[1...3]
print(closed)

Односторонние диапазоны

Swift поддерживает односторонние диапазоны. arr[2...] означает «от индекса 2 до конца», а arr[..<2] — «всё до индекса 2».

let data = [1, 2, 3, 4, 5, 6]
print(data[3...])
print(data[..<3])

Срезы — это представления

ArraySlice — это представление родительского массива. Его создание почти не требует затрат, поскольку элементы не копируются до тех пор, пока срез не изменят или не преобразуют.

let big = Array(1...1000)
let window = big[100..<105]
print(window)

Перебор среза

По срезу можно пройти циклом так же, как по массиву. Значения являются теми же элементами, которые содержит родительский массив.

let words = ["sun", "moon", "star", "comet"]
let pair = words[1..<3]
for w in pair {
    print(w)
}

Срез массива строк

Получение среза работает с любым типом элементов. Здесь мы получаем диапазон из массива имён.

let names = ["Ada", "Bob", "Cleo", "Dan", "Eve"]
let some = names[0..<2]
print(some)

Объединение с count

Можно динамически создать диапазон, используя count массива, чтобы получить несколько последних элементов.

let nums = [5, 10, 15, 20, 25]
let lastTwo = nums[(nums.count - 2)..<nums.count]
print(lastTwo)

Пустой срез

Диапазон с одинаковыми нижней и верхней границами создаёт пустой срез. Это допустимо и безопасно.

let arr = [1, 2, 3, 4]
let empty = arr[2..<2]
print(empty)
print(empty.isEmpty)

Получение среза и суммирование

Поскольку срез соответствует тем же протоколам, что и исходная коллекция, к нему можно напрямую применять такие методы, как reduce.

let values = [2, 4, 6, 8, 10]
let sum = values[1..<4].reduce(0, +)
print(sum)

Зачем нужны срезы

Срезы позволяют работать с частями больших массивов без затрат на копирование. Это особенно полезно для алгоритмов двоичного поиска или скользящих окон.

let series = Array(1...20)
let firstHalf = series[..<10]
let secondHalf = series[10...]
print(firstHalf.count, secondHalf.count)

Быстрая проверка

Проверьте своё понимание получения срезов по диапазону.

Итоги

Вы узнали, что обращение к массиву по диапазону возвращает ArraySlice, использующий общее хранилище с родительским массивом. Полуоткрытый диапазон ..< исключает верхнюю границу, замкнутый ... включает её, а односторонние диапазоны позволяют без лишних затрат получить префикс или суффикс.

let r = [10, 20, 30, 40]
print(r[1..<3])
print(r[1...])
print(r[..<2])

Часто задаваемые вопросы

Урок «Создание срезов с помощью диапазонов» бесплатный?

Да — полный текст урока «Создание срезов с помощью диапазонов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.

Чему я научусь в уроке «Создание срезов с помощью диапазонов»?

Извлекайте подпоследовательности без копирования. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Создание срезов с помощью диапазонов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Создание срезов с помощью диапазонов
  2. Семантика индексов ArraySlice
  3. Преобразование срезов обратно в массивы
  4. prefix, suffix и dropFirst
← Назад к Swift Academy