Swift Academy · Урок

Итерация по коллекциям с for-in

Перебирайте массивы, словари и множества с помощью enumerated и zip

Урок 3 из 412 шагов

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

Добро пожаловать

Цикл `for-in` работает с любой `Sequence`: массивами, словарями, множествами, строками и вашими собственными типами. Давайте рассмотрим самые полезные шаблоны.

Перебор массива

```swift let fruits = ["apple", "banana", "cherry"] for fruit in fruits { print(fruit) } // apple, banana, cherry ``` На каждой итерации очередной элемент связывается с переменной `fruit`.

enumerated() — индекс и значение

Если нужны и индекс, и значение, используйте `.enumerated()`: ```swift for (index, fruit) in fruits.enumerated() { print("\(index): \(fruit)") } // 0: apple // 1: banana // 2: cherry ``` `enumerated()` возвращает последовательность кортежей `(offset, element)`.

Перебор словаря

При переборе словаря возвращаются кортежи `(key, value)` в неопределённом порядке: ```swift let scores = ["Alice": 95, "Bob": 87] for (name, score) in scores { print("\(name): \(score)") } ``` Если нужен предсказуемый порядок, сначала отсортируйте ключи.

Перебор множества

Элементы множества перебираются в неопределённом порядке: ```swift let colors: Set = ["red", "green", "blue"] for color in colors.sorted() { print(color) } ``` Вызывайте `.sorted()`, когда нужен алфавитный или возрастающий порядок.

zip() — параллельный перебор

Перебирайте две последовательности параллельно с помощью `zip()`: ```swift let names = ["Alice", "Bob", "Carol"] let scores = [95, 87, 92] for (name, score) in zip(names, scores) { print("\(name): \(score)") } ``` `zip` останавливается на более короткой последовательности.

Фильтрация при итерации: условие отбора

Добавьте условие `where`, чтобы пропускать элементы непосредственно в цикле: ```swift for n in 1...20 where n % 3 == 0 { print(n) // 3, 6, 9, 12, 15, 18 } ``` Это более читаемый вариант, чем помещать `if` внутрь тела цикла.

Итерация с индексами

Получите диапазон исходных индексов с помощью `.indices`: ```swift var arr = [10, 20, 30] for i in arr.indices { arr[i] *= 2 } // arr is now [20, 40, 60] ``` Используйте этот подход, когда нужно изменять элементы непосредственно на месте.

Деструктуризация кортежей в цикле for-in

Последовательности кортежей можно деструктурировать прямо в цикле: ```swift let points = [(1, 2), (3, 4), (5, 6)] for (x, y) in points { print("x=\(x), y=\(y)") } ``` Это понятно и лаконично — нет необходимости использовать индексы `.0` и `.1`.

Ленивые последовательности в циклах

Добавьте префикс `.lazy`, чтобы отложить вычисления и избежать создания промежуточных массивов: ```swift let total = (1...1_000_000) .lazy .filter { $0 % 2 == 0 } .prefix(5) .reduce(0, +) print(total) // 30 ``` `.lazy` особенно полезен при объединении операций над большими последовательностями.

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

Какой метод возвращает и индекс, и значение при переборе массива?

Итоги

Главное: • `for elem in collection` — базовая итерация • `.enumerated()` — пары «индекс + значение» • `zip(a, b)` — параллельная итерация двух последовательностей • `for x in seq where condition` — встроенная фильтрация • `.indices` — используйте при изменении элементов • `.lazy` — откладывает обработку больших последовательностей Далее: break, continue и именованные инструкции.
Можно начать бесплатно

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

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

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

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

Урок «Итерация по коллекциям с for-in» бесплатный?

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

Чему я научусь в уроке «Итерация по коллекциям с for-in»?

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

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

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

Сколько времени занимает урок «Итерация по коллекциям с for-in»?

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

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

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

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

  1. Циклы for-in с диапазонами
  2. Циклы while и repeat-while
  3. Итерация по коллекциям с for-in
  4. break, continue и именованные инструкции
← Назад к Swift Academy