0Pricing
Swift Academy · Урок

Обобщённые алгоритмы для коллекций

Используйте обобщённые алгоритмы, такие как map , filter и reduce , и пишите собственные функции для Sequence с простыми ограничениями.

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

Зачем нужны обобщённые алгоритмы

Swift предоставляет мощные обобщённые алгоритмы для последовательностей и коллекций: преобразование, фильтрацию и reduce. Вы также можете писать собственные обобщённые вспомогательные функции.

Преобразование

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

let nums = [1, 2, 3]
let doubled = nums.map { $0 * 2 }   // [2, 4, 6]
print(doubled)

let words = ["swift", "kit"]
let caps = words.map { $0.uppercased() } // ["SWIFT","KIT"]
print(caps)

Фильтрация

Фильтрация сохраняет элементы, удовлетворяющие условию-предикату.

let scores = [45, 72, 88, 53]
let passing = scores.filter { $0 >= 60 } // [72, 88]
print(passing)

let names = ["Ana","Li","Max"]
let short = names.filter { $0.count <= 2 } // ["Li"]
print(short)

reduce

reduce сворачивает последовательность в один результат, используя начальное значение и замыкание для объединения.

let sum = [1,2,3,4].reduce(0) { acc, x in acc + x } // 10
print(sum)

let joined = ["a","b","c"].reduce("") { acc, s in acc + s } // "abc"
print(joined)

Пользовательский обобщённый алгоритм для последовательности

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

// Works for any Sequence whose Element meets the predicate
func allMatch<S: Sequence>(_ seq: S, _ predicate: (S.Element) -> Bool) -> Bool {
    for x in seq { if !predicate(x) { return false } }
    return true
}
print(allMatch([2,4,6]) { $0 % 2 == 0 }) // true
print(allMatch(["ab","c"]) { $0.count >= 2 }) // false

Советы и шаблоны

Советы:

  • Предпочитайте понятные замыкания: называйте параметры, если без этого ухудшается читаемость.
  • Объединяйте преобразование, фильтрацию и reduce в цепочки обработки.
  • Для повышения производительности выносите тяжёлые операции за пределы часто выполняемых циклов.

Значение reduce

Быстрая проверка: какая операция объединяет последовательность в одно значение, начиная с начального значения?

Итоги

Итоги: используйте преобразование для изменения элементов, фильтрацию для выбора и reduce для объединения. Вы также можете писать собственные обобщённые вспомогательные функции для последовательностей.

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

Урок «Обобщённые алгоритмы для коллекций» бесплатный?

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

Чему я научусь в уроке «Обобщённые алгоритмы для коллекций»?

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

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

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

Сколько времени занимает урок «Обобщённые алгоритмы для коллекций»?

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

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

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

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

  1. Обобщённые функции и типы
  2. Ограничения (where), выведение типов
  3. Обобщённые алгоритмы для коллекций
← Назад к Swift Academy