Menu
Coddy logo textTech

Метод 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: Wake up
// Задача 2: Exercise
// Задача 3: Eat breakfast

Метод enumerated() делает ваш код чистым и читаемым по сравнению с ручным управлением отдельной переменной-счетчиком.

challenge icon

Задание

Легко

Напишите функцию formatWithPositions, которая принимает items и возвращает отформатированную строку, показывающую каждый элемент с его порядковым номером.

Используйте метод enumerated() для итерации по массиву и создания строки, где перед каждым элементом стоит его порядковый номер, начиная с 1.

Логика:

  1. Пройдите по массиву, используя enumerated()
  2. Для каждого элемента создайте строку в формате "position. item" (используя нумерацию с 1)
  3. Объедините все отформатированные строки символом новой строки (\n)

Параметры:

  • items ([String]): Массив строк для форматирования

Возвращаемое значение: Одна строка, где каждый элемент находится на новой строке с префиксом в виде его порядкового номера (String). Формат: "1. item1\n2. item2\n3. item3"

Пример: Если items равен ["Apple", "Banana", "Cherry"], функция должна вернуть:

"1. Apple\n2. Banana\n3. Cherry"

Примечание: Если массив пуст, верните пустую строку "".

Шпаргалка

Метод enumerated() возвращает последовательность кортежей, содержащих как индекс, так и элемент массива:

let colors = ["Red", "Green", "Blue"]

for (index, color) in colors.enumerated() {
    print("\(index): \(color)")
}
// 0: Red
// 1: Green
// 2: Blue

Каждый кортеж разлагается непосредственно в цикле с использованием синтаксиса (index, element), обеспечивая доступ как к позиции, так и к значению.

Это полезно для создания нумерованных списков путем добавления 1 к индексу, отсчитываемому от нуля:

let tasks = ["Wake up", "Exercise", "Eat breakfast"]

for (index, task) in tasks.enumerated() {
    print("Task \(index + 1): \(task)")
}
// Task 1: Wake up
// Task 2: Exercise
// Task 3: Eat breakfast

Попробуйте сами

func formatWithPositions(items: [String]) -> String {
    // Напишите код здесь
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы