Быстрый цикл for-in: как его использовать и зачем?

В этой статье вы узнаете о цикле for-in, его вариантах использования и вариантах.

Циклы For-in используются для выполнения набора задач определенное количество раз. Эти циклы перебирают любые последовательности, такие как элементы в массиве, диапазоне или символы в строке.

Мы также используем цикл for-in для выполнения некоторых повторяющихся процессов в течение фиксированного промежутка времени.

Зачем нам нужен цикл for-in?

Представьте, что кто-то сказал вам написать программу, которая выводит Hello, World! на экране. Ваше решение будет:

 print ("Привет, мир!")

Что, если они передумают и попросят вас написать программу, выводящую Hello, World! на экране пять раз … Без знания цикла ваше решение могло бы быть таким:

 print ("Привет, мир!") print ("Привет, мир!") print ("Привет, мир!") print ("Привет, мир!") print ("Привет, мир!")

Хм. Написание аналогичного кода пять раз для выполнения одной и той же работы занимает много времени. Если да, то что бы вы сделали, если бы кто-нибудь попросил вас написать программу, выводящую Hello, World! в экран сто или даже миллион раз?

Одно наивное решение - написать printоператор заданное количество раз. Звучит безумно, правда? Но есть лучшее решение для этого с использованием for-inциклов с несколькими строками кода, такими как:

 for i in 1… 100 ( //outputs Hello world for 100 times in the screen print("Hello, World!") ) 

Не беспокойтесь о синтаксисе, мы рассмотрим его ниже.

Синтаксис цикла For-in Loop

Вы можете создать цикл for in в Swift как:

 для in () 

Вышеупомянутый цикл выполняет итерацию по диапазону, и мы можем получить доступ к каждому элементу, возвращаемому из диапазона в переменной. Если вы не знаете о диапазоне, вы можете проверить статью: Swift Ranges.

Как это устроено?

  • Итерируемая последовательность - это.
  • Устанавливается на первое число в диапазоне, и выполняются операторы внутри цикла.
  • После выполнения инструкции обновляется, чтобы содержать второе значение в, и инструкция выполняется снова.
  • Этот процесс продолжается до тех пор, пока не будет достигнут конец диапазона и цикл не остановится.

Пример 1: Как работает цикл for-in в Swift

 for i in 1… 3 ( print("Hello world!. Value is (i)") ) 

Когда вы запустите программу, вывод будет:

Привет мир!. Значение 1 Hello world !. Значение 2 Hello world !. Значение 3

В приведенной выше программе повторяемая последовательность находится в диапазоне от 1 до 3.

Значение i устанавливается на первое число в диапазоне (1) и обновляется до следующего номера диапазона на каждой итерации. Этот процесс продолжается до тех пор, пока не будет достигнут конец диапазона (3).

Шаги выполнения цикла For-in
Итерация Значение, возвращенное из диапазона (i) Вывод
1 1 Привет мир!. Значение 1
2 2 Привет мир!. Значение 2
3 3 Привет мир!. Значение 3

Отказ от значения диапазона в цикле for-in

Если вы не используете значение диапазона внутри цикла, вы можете отказаться от использования _(подчеркивания) в Swift как:

 для _ в () 

Пример 2: Отмена значения диапазона в цикле for-in

 // This example neglects value and uses half open range operator for _ in 1… <3 ( print("Hello world!") ) 

Когда вы запустите программу, вывод будет:

Привет мир! Привет мир!

В приведенной выше программе повторяющаяся последовательность находится в диапазоне от 1 до 2 из-за использования оператора полуоткрытого диапазона (… <), который включает нижнюю границу (1), но не верхнюю границу (3).

_игнорирует значение из диапазона (1), и выполняется инструкция печати. Оператор печати вызывается снова для следующей итерации, и процесс завершается, потому что 2 - последнее значение в диапазоне.

Шаги выполнения цикла For-in без значений диапазона
Итерация Значение, возвращенное из диапазона Вывод
1 Отброшено Привет мир!
2 Отброшено Привет мир!

цикл for-in для фиксированных интервалов с использованием шага

Если вам нужен цикл, который увеличивается на какое-то фиксированное значение на каждой итерации, вместо диапазона, вы должны использовать метод шага.

Пример 3: цикл for-in с использованием метода шага

 let interval = 2 for i in stride(from: 1, to: 10, by: interval) ( print(i) ) 

Когда вы запустите программу, вывод будет:

 1 3 5 7 9 

В приведенной выше программе strideфункция возвращает последовательность чисел: 1, 3, 5, 7, 9.

Значение i устанавливается равным первому номеру последовательности (1), и выполняется оператор печати внутри цикла, который выводит «1» в консоль.

После выполнения оператора значение i обновляется до другого значения (3), и снова вызывается оператор печати. Этот процесс продолжается до тех пор, пока не будут доступны все элементы последовательности.

Шаги выполнения цикла For-in с использованием шага
Ценность Условие (значение <конец) i (Выход)
1 1 <10 (верно) 1
1 + 2 = 3 3 <10 (верно) 3
1 + 2 * 2 = 5 5 <10 (верно) 5
1 + 3 * 2 = 7 7 <10 (верно) 7
1 + 4 * 2 = 9 9 <10 (верно) 9
1 + 5 * 2 = 11 11 <10 (ложь) Остановки

Как получить доступ к элементам коллекции с помощью цикла for-in?

Предположим, у вас есть массив строк, как показано ниже. Если вы не знаете о массиве, подумайте о массиве как о едином контейнере, который может хранить более одного значения. Для более подробного объяснения см. Swift Arrays.

 let programmingLanguages ​​= ("Swift", "Java", "Go", "JavaScript", "Kotlin", "Python")

What if someone told you to print all the programming languages?

A way is to access those elements using index as programmingLanguages(0), programmingLanguages(1)… and so on till you get all the elements. But this is too tedious.

Here comes for-in loop to the rescue. You can iterate using for in loop as:

Example 4: Accessing elements of an array (collection) using for-in loop

 let programmingLanguages = ("Swift", "Java", "Go", "JavaScript", "Kotlin", "Python") for language in programmingLanguages ( print(language) ) 

When you run the program, the output will be:

 Swift Java Go JavaScript Kotlin Python 

In the above program, the sequence being iterated over is an array of strings.

The value of language is set to the first element of the array, and the print statement inside the loop is executed which outputs "Swift" in the console.

After the statement is executed, language is updated with the next element of the array and the print statement is called again. This process continues until the last element of array is accessed.

Example 5: Accessing elements of a string (collection) using for-in loop

Since, in Swift, strings are also collection, you can access each character in a string using for loop.

 for value in "I♥Swift!" ( print(value) ) 

When you run the program, the output will be:

 I ♥ S w i f t ! 

How to access indices of a collection using for-in loop?

If you want to access the index of the array (position of elements in an array i.e. 0, 1, 2), you need to use enumerated method as:

Example 6: Accessing indices of an array using for-in loop

 let programmingLanguages = ("Swift", "Java", "Go", "JavaScript", "Kotlin", "Python") for (index, language) in programmingLanguages.enumerated() ( print("(index):(language)") ) 

When you run the program, the output will be:

 0:Swift 1:Java 2:Go 3:JavaScript 4:Kotlin 5:Python 

Here, the enumerated method returns a tuple (Int, String) composed of the index (Int) and the value (String) for each item in the array. For example: (0, Swift), (1, Java)…

Using for-in loop, you can access these items in a tuple one by one. If you don't know about Tuple, you can simply think it as a container that can hold value of different types. For more detailed explanation, see Swift Tuples .

How to filter elements using where clause in a for-in loop?

You can also filter contents from for in loop using where clause as

 for value in "I♥Swift!" where value != "!" ( print(value) //removes exclamation sign ) 

When you run the program, the output will be:

 I ♥ S w i f t 

In the above program, the sequence being iterated over is string (collection of characters).

value устанавливается на первый символ строки и проверяется условием where. Если условие возвращается true, выполняется блок внутри цикла (оператор печати), который выводит «I» в консоль.

После выполнения оператора значение обновляется до следующего символа строки и снова проверяется условие. Если условие возвращается false, блок не выполняется, и значение обновляется до следующего символа.

Этот процесс продолжается до тех пор, пока не будет осуществлен доступ к последнему символу строки.

Фильтр с использованием шагов выполнения цикла for-in
Итерация ценность значение! = «!» Вывод
1 я правда я
2 правда
3 S правда S
4 ш правда ш
5 я правда я
6 ж правда ж
7 т правда т
8 ! ложный

Интересные статьи...