Урок 12. Циклы
Главная / Уроки / Страница блока Основы / Урок 12. Циклы
14 января 2023
Цикл for in
Само по себе слово цикл предполагает повторение каких-либо действий один или несколько раз.
Циклы for-in используется для перебора значений всех видов коллекций. давайте посмотрим на его синтаксис:
for элемент коллекции in коллекция {
выполнение какого-либо действия
}
После ключевого слова in мы определяем какую либо коллекцию, это может быть что угодно диапазоны чисел, элементы массива, элементы словарей, множеств, символов в строке и других последовательностей. А после ключевого слова for мы определяем последовательно элемент этой коллекции.
Для понимания работы цикла, мы с вами возьмем несколько коллекций и разложим их на элементы:
let names = ["Ann", "Tim", "Bob"]
"Ann" // первый элемент массива
"Tim" // второй элемент массива
"Bob" // третий элемент массива
let range = 1...3
1 // первый элемент диапазона
2 // второй элемент диапазона
3 // третий элемент диапазона
let semiClosedRange = 1..<3 // Здесь тройка не входит в диапазон
1 // первый элемент диапазона
2 // второй элемент диапазона
То есть эти значения мы будем перебирать в цикле. Это не функциональный код, я просто хочу вас навести на правильные мысли.
Теперь обратимся снова к синтаксису цикла и постепенно попытаемся разложить наши коллекции:
for элемент коллекции in коллекция {
выполнение какого-либо действия
}
После ключевого слова in мы должны определить коллекцию, мы начнем с массива names, то есть мы будем перебирать имена:
for элемент коллекции in names {
выполнение какого-либо действия
}
После ключевого слова for мы должны как то назвать элемент перебираемой коллекции, так как у нас это имена, то один элемент будет именем, так его и назовем:
for name in names {
выполнение какого-либо действия
}
После ключевого слова for мы определили свойство name, оно будет в себе хранить значение одного элемента из коллекции, которую мы определяем после ключевого слова in.
Возникает резонный вопрос, какое значение примет свойство name, если в коллекции не один элемент, а много?!
Все очень просто, оно будет принимать последовательно каждый элемент коллекции, каждую итерацию(проход) цикла. Звучит очень страшно, но на самом деле все просто.
Итерация, это по сути выполнение блока кода в фигурных скобках цикла:
for name in names {
Одна итерация означает одно выполнение кода внутри этих скобок
}
Количество таких итераций, будет зависеть от количества элементов коллекции, которую вы определите после ключевого слова in.
Внутри фигурных скобок, вы можете использовать свойство name, оно доступно только в этой локальной зоне. Давайте выведем на консоль все имена из коллекции:
let names = ["Ann", "Tim", "Bob"]
"Ann" // первый элемент массива
"Tim" // второй элемент массива
"Bob" // третий элемент массива
for name in names {
print(name)
}
Запустим проект и посмотрим на консоль:
Обратите внимание что все имена располагаются с новой строки, то есть цикл каждую новую итерацию вызвал новый принт, с новыми данными. Справа вы можете видеть в круглых скобках 3 итерации, то есть блок кода в фигурных скобках был выполнен 3 раза.
давайте проследим каждую итерацию нашего цикла.
Первая итерация, свойство name инициализируется первым элементом из коллекции:
Вторая итерация, свойство name инициализируется вторым элементом из коллекции:
Третья итерация будет последняя, так как элементов в коллекции больше нет, свойство name инициализируется третьим элементом из коллекции: