У цій статті ви дізнаєтесь про цикл for-in, варіанти його використання та варіанти.
Вхідні цикли використовуються для запуску набору завдань протягом певної кількості разів. Ці цикли повторюють будь-які послідовності, такі як елементи в масиві, діапазоні або символах у рядку.
Ми також використовуємо цикл for-in, щоб виконувати деякі повторювані процеси протягом фіксованого періоду часу.
Навіщо нам цикл входу?
Уявіть, хтось сказав вам написати програму, яка виводить привіт, Світ! на екрані. Вашим рішенням буде:
print ("Привіт, Світе!")
Що робити, якщо вони передумали і сказали вам написати програму, яка виводить привіт, Світ! на екрані п’ять разів … Без відома циклу, вашим рішенням може бути:
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 у Swift як:
для в ()
Вищезазначений цикл переглядає діапазон, і ми можемо отримати доступ до кожного елемента, що повертається з діапазону у змінну. Якщо ви не знаєте про дальність, ви можете переглянути статтю: Швидкі діапазони.
Як це працює?
- Послідовність, що повторюється, є a.
- Встановлюється перше число в діапазоні, а оператори всередині циклу виконуються.
- Після виконання оператора оновляється, щоб містити друге значення в і оператор виконується знову.
- Цей процес триває до кінця діапазону і цикл зупиняється.
Приклад 1: Як цикл for-in працює в Swift
for i in 1… 3 ( print("Hello world!. Value is (i)") )
Коли ви запускаєте програму, результат буде:
Привіт Світ!. Значення - 1 Привіт світ! Значення 2 Привіт світ !. Значення - 3
У вищезазначеній програмі ітерація послідовності становить діапазон від 1 до 3.
Значення i встановлюється для першого числа в діапазоні (1) і оновлюється до наступного числа діапазону на кожній ітерації. Цей процес триває до кінця діапазону (3).
Етапи виконання циклуІтерація | Значення, повернене з діапазону (i) | Вихідні дані |
---|---|---|
1 | 1 | Привіт Світ!. Значення дорівнює 1 |
2 | 2 | Привіт Світ!. Значення дорівнює 2 |
3 | 3 | Привіт Світ!. Значення - 3 |
Відкидання значення діапазону в циклі входу
Якщо ви не використовуєте значення діапазону всередині циклу, ви можете скасувати використання _
(підкреслення) у Swift як:
для _ у ()
Приклад 2: Відкидання значення діапазону у вхідному циклі
// This example neglects value and uses half open range operator for _ in 1… <3 ( print("Hello world!") )
Коли ви запускаєте програму, результат буде:
Привіт Світ! Привіт Світ!
У вищезазначеній програмі ітерація послідовності становить діапазон від 1 до 2 через використання оператора напіввідкритого діапазону (… <), який включає нижню межу (1), але не верхню межу (3).
_
нехтує значенням з діапазону (1), і оператор print виконується. Оператор print знову викликається для наступної ітерації, і процес закінчується, оскільки 2 - останнє значення в діапазоні.
Ітерація | Значення, повернене з діапазону | Вихідні дані |
---|---|---|
1 | Викинуто | Привіт Світ! |
2 | Викинуто | Привіт Світ! |
вхідний шлейф для фіксованих інтервалів з використанням кроку
Якщо вам потрібен цикл, який збільшується на якесь фіксоване значення в кожній ітерації, замість діапазону, вам доведеться використовувати метод stride.
Приклад 3: вхідний цикл із використанням методу кроку
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), а оператор print знову викликається. Цей процес триває, поки не буде здійснено доступ до всіх елементів послідовності.
Етапи виконання циклу для використання в strideЗначення | Умова (значення <кінець) | 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?
Припустимо, у вас є масив рядків, як показано нижче. Якщо ви не знаєте про масив, подумайте про масив як про один контейнер, який може зберігати більше одного значення. Детальніше пояснення див. У розділі "Швидкі масиви".
let programLanguages = ("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).
значення встановлюється першим символом рядка і перевіряється умовою where. Якщо умова повертається true
, виконується блок всередині циклу (оператор друку), який виводить "I" в консоль.
Після виконання оператора значення оновлюється до наступного символу рядка і знову перевіряється умова. Якщо умова повертається false
, блок не виконується, а значення оновлюється до наступного символу.
Цей процес триває, поки не буде здійснено доступ до останнього символу рядка.
Фільтруйте за допомогою кроків виконання циклуІтерація | значення | значення! = “!” | Вихідні дані |
---|---|---|---|
1 | Я | правда | Я |
2 | ♥ | правда | ♥ |
3 | S | правда | S |
4 | w | правда | w |
5 | i | правда | i |
6 | f | правда | f |
7 | т | правда | т |
8 | ! | помилковий |