Swift Academy · Урок

prefix, suffix и dropFirst

Декларативно извлекайте части коллекции.

Урок 4 из 413 шагов

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

prefix(n)

prefix(n) возвращает срез первых n элементов. Это безопасно даже в том случае, если n больше размера массива.

let arr = [1, 2, 3, 4, 5]
print(Array(arr.prefix(3)))
print(Array(arr.prefix(99)))

suffix(n)

suffix(n) возвращает срез последних n элементов и также безопасно ограничивает количество элементов.

let arr = [1, 2, 3, 4, 5]
print(Array(arr.suffix(2)))
print(Array(arr.suffix(0)))

dropFirst

dropFirst() удаляет первый элемент, а dropFirst(n) — первые n элементов.

let arr = [10, 20, 30, 40]
print(Array(arr.dropFirst()))
print(Array(arr.dropFirst(2)))

dropLast

dropLast() удаляет элементы с конца. Как и остальные методы, он возвращает срез.

let arr = [10, 20, 30, 40]
print(Array(arr.dropLast()))
print(Array(arr.dropLast(3)))

Все возвращают срезы

Каждый из этих методов возвращает ArraySlice, а не новый массив. Преобразуйте результат, когда Вам нужен конкретный массив.

let arr = [1, 2, 3, 4]
let s = arr.prefix(2)
print(type(of: s))

Безопасность при больших значениях n

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

let arr = [1, 2]
print(Array(arr.prefix(10)))
print(Array(arr.dropFirst(10)))

prefix(while:)

prefix(while:) берёт элементы с начала, пока выполняется условие, а затем останавливается.

let arr = [2, 4, 6, 7, 8]
let evensAtStart = arr.prefix(while: { $0 % 2 == 0 })
print(Array(evensAtStart))

drop(while:)

drop(while:) пропускает начальные элементы, пока выполняется условие, и возвращает остальные.

let arr = [2, 4, 6, 7, 8]
let rest = arr.drop(while: { $0 % 2 == 0 })
print(Array(rest))

Комбинирование методов

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

let arr = [10, 20, 30, 40, 50]
let middle = arr.dropFirst().dropLast()
print(Array(middle))

Шаблон просмотра и извлечения

Используйте first, чтобы посмотреть первый элемент, а dropFirst() — чтобы получить остаток. Это распространённый функциональный шаблон обработки списков.

let queue = [100, 200, 300]
if let head = queue.first {
    let tail = Array(queue.dropFirst())
    print("head:", head, "tail:", tail)
}

Понятное намерение

Эти методы лучше передают намерение, чем ручное задание диапазонов. arr.suffix(3) понятнее, чем arr[(arr.count-3)...].

let arr = [1, 2, 3, 4, 5, 6]
print(Array(arr.suffix(3)))

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

Проверьте работу prefix и drop.

Итоги

prefix(n) и suffix(n) берут элементы с концов, а dropFirst и dropLast удаляют элементы с концов. Все они возвращают срезы и безопасны при слишком больших значениях количества элементов. prefix(while:) и drop(while:) используют предикаты.

let arr = [1, 2, 3, 4, 5]
print(Array(arr.prefix(2)), Array(arr.suffix(2)), Array(arr.dropFirst()))
Можно начать бесплатно

Изучай Swift с ИИ-репетитором — бесплатно

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

Курсы
122
Уроки
409

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

Урок «prefix, suffix и dropFirst» бесплатный?

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

Чему я научусь в уроке «prefix, suffix и dropFirst»?

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

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

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

Сколько времени занимает урок «prefix, suffix и dropFirst»?

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

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

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

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

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