Метод enumerate
Часть раздела Основы путешествия по Swift на Coddy. Урок 70 из 86.
Иногда при переборе массива нужно знать не только элемент, но и его позицию. Вы могли бы вручную отслеживать индекс с помощью переменной-счётчика, но Swift предлагает более простое решение: метод enumerated().
При вызове enumerated() для массива возвращается последовательность кортежей, где каждый кортеж содержит индекс и элемент:
let colors = ["Red", "Green", "Blue"]
for (index, color) in colors.enumerated() {
print("\(index): \(color)")
}
// 0: Red
// 1: Green
// 2: BlueОбратите внимание, как мы напрямую разбираем каждый кортеж в цикле с помощью (index, color). Так мы получаем доступ к обоим значениям без дополнительного кода.
Это особенно полезно, когда нужно отображать нумерованные списки или выполнять операции, зависящие от позиции элемента:
let tasks = ["Wake up", "Exercise", "Eat breakfast"]
for (index, task) in tasks.enumerated() {
print("Task \(index + 1): \(task)")
}
// Задача 1: Проснуться
// Задача 2: Сделать зарядку
// Задача 3: ПозавтракатьМетод enumerated() помогает сделать код чище и понятнее по сравнению с ручным ведением отдельной переменной-счётчика.
Задание
ЛегкоНапиши функцию formatWithPositions, которая принимает items и возвращает отформатированную строку, в которой каждый элемент сопровождается номером его позиции.
Используй метод enumerated(), чтобы перебрать массив и создать строку, в которой перед каждым элементом указан его порядковый номер, начиная с 1.
Логика:
- Перебери массив с помощью
enumerated() - Для каждого элемента создай строку в формате
"position. item"(используя нумерацию, начинающуюся с 1) - Объедини все отформатированные строки символом новой строки (
\n)
Параметры:
items([String]): массив строк для форматирования
Возвращает: Одну строку, в которой каждый элемент находится на отдельной строке и перед ним указан номер его позиции (String). Формат: "1. item1\n2. item2\n3. item3"
Пример: Если items равно ["Apple", "Banana", "Cherry"], функция должна вернуть:
"1. Apple\n2. Banana\n3. Cherry"Примечание: если массив пуст, верни пустую строку "".
Попробуйте сами
func formatWithPositions(items: [String]) -> String {
// Напишите код здесь
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеПовторение: простая математикаОператоры сравнения7Основы ввода-вывода
Функция printИнтерполяция строкВвод с ReadLineПреобразование типовПовторение: до 120Повторение: истина или ложь2Переменные
Let и VarАннотации типовЧислаСтрокаЛогический типСоглашения об именованииПовторение — инициализация переменных5Операторы, часть 2
Логические операторы, часть 1Логические операторы, часть 2Повторение: простая логикаЛогические операторы, часть 3Тернарный оператор8Калькулятор разделения счёта
Приветственное сообщениеВвод данных14Массивы: продвинутый уровень
Срезы массивов. Часть 1Срезы массивов. Часть 2Операторы последовательностейМетод Contains3Опциональные значения
Что такое опциональные значенияИзвлечение значения с помощью if letGuard letОператор объединения с nilПовторение — безопасное извлечение значения6Принятие решений
Условный оператор ifIf — ElseПовторение: простой калькуляторОператор switchSwitch с диапазонами9Циклы
Цикл for-inЦикл whileЦикл repeat-whileПрерывание циклаПереход к следующей итерацииПовторение — факториалДиапазоны в циклахВложенный циклПовторение — динамический вводПотренируйтесь самостоятельно: Песочница Swift