prefix, suffix и dropFirst
Декларативно извлекайте части коллекции.
«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 — локальная установка не требуется.
Все уроки этого курса
- Создание срезов с помощью диапазонов
- Семантика индексов ArraySlice
- Преобразование срезов обратно в массивы
- prefix, suffix и dropFirst