Свифт фор-ин лооп: како га користити и зашто?

У овом чланку ћете сазнати више о петљи фор-ин, њеним случајевима коришћења и варијантама.

Петље за улазак користе се за покретање скупа задатака одређени број пута. Ове петље се превлаче преко било којих секвенци, попут ставки у низу, опсегу или знакова у низу.

Такође користимо фор-ин петљу да бисмо извршавали неке понављајуће процесе одређено време.

Зашто нам је потребна петља за улазак?

Замислите да вам је неко рекао да напишете програм који ће произвести Хелло, Ворлд! на екрану. Ваше решење ће бити:

 принт ("Здраво, свет!")

Шта ако би се предомислили и рекли вам да напишете програм који ће произвести Хелло, Ворлд! на екрану пет пута … Без знања о петљи, ваше решење би могло бити:

 принт ("Хелло, Ворлд!") принт ("Хелло, Ворлд!") принт ("Хелло, Ворлд!") принт ("Хелло, Ворлд!") принт ("Хелло, Ворлд!")

Хмм. Изгледа дуго времена да се сличан код напише пет пута да би се обавило исто дело. Ако јесте, шта бисте урадили ако неко затражи да напишете програм који ће произвести Здраво, Свет! на екрану стотину или чак милион пута?

Једно наивно решење је писање printизјаве за дати број пута. Звучи лудо, зар не? Али постоји боље решење за ово уз употребу for-inпетљи са неколико редова кода као:

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

Не брините о синтакси, истражићемо је у наставку.

Синтакса петље Фор-ин

Можете да направите фор ин петљу у Свифту као:

 јер у () 

Горња петља се понавља кроз опсег и можемо приступити сваком елементу враћеном из опсега у променљивој. Ако не знате о домету, можете погледати чланак: Брзи домети.

Како то ради?

  • Низ који се понавља је а.
  • Поставља се на први број у опсегу и извршавају се изрази унутар петље.
  • Након извршавања израза, ажурира се тако да садржи другу вредност у и исказ се поново извршава.
  • Овај процес се наставља све док се не достигне крај опсега и петља се заустави.

Пример 1: Како фор-ин петља ради у Свифту

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

Када покренете програм, излаз ће бити:

Здраво Свете!. Вредност је 1 Здраво свете !. Вредност је 2 Здраво свете !. Вредност је 3

У горе наведеном програму, низ који се понавља је у опсегу од 1 до 3.

Вредност и се поставља на први број у опсегу (1) и ажурира на следећи број опсега на свакој итерацији. Овај поступак се наставља све док се не достигне крај опсега (3).

Кораци извршења петље
Понављање Вредност враћена из опсега (и) Оутпут
1 1 Здраво Свете!. Вредност је 1
2 2 Здраво Свете!. Вредност је 2
3 3 Здраво Свете!. Вредност је 3

Одбацивање вредности опсега у улазној петљи

Ако немате користи за вредност опсега унутар петље, можете да одбаците помоћу _(доњег црта) у Свифту као:

 за _ у () 

Пример 2: Одбацивање вредности опсега у улазној петљи

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

Када покренете програм, излаз ће бити:

Здраво Свете! Здраво Свете!

У горњем програму, низ који се понавља је опсег од 1 до 2 због употребе оператора полуотвореног опсега (… <) који укључује доњу границу (1), али не и горњу границу (3).

_занемарује вредност из опсега (1) и наредба исписа се извршава. Извод за испис поново се позива за следећу итерацију и поступак се завршава јер је 2 последња вредност у опсегу.

Кораци извршења петље у облику без вредности распона
Понављање Вредност је враћена из опсега Оутпут
1 Одбачено Здраво Свете!
2 Одбачено Здраво Свете!

петља за фиксне интервале помоћу корака

Ако желите петљу која се увећава за неку фиксну вредност у свакој итерацији, уместо опсега, морате користити методу корака.

Пример 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.

Вредност и постављена је на први број секвенце (1), а извршава се испис унутар петље који на конзоли даје „1“.

Након извршавања израза, вредност и се ажурира на другу вредност (3) и исказ за испис се поново позива. Овај процес се наставља све док се не приступи свим елементима низа.

Кораци извршења петље у кораку помоћу корака
Вредност Стање (вредност <крај) и (излаз)
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 (нетачно) Зауставља се

Како приступити елементима колекције помоћу фор-ин петље?

Претпоставимо да имате низ жица као доле. Ако не знате за низ, мислите на њега као на један контејнер који може да ускладишти више од једне вредности. За детаљнија објашњења, погледајте Брзи низови.

 нека програмЛангуагес = ("Свифт", "Јава", "Го", "ЈаваСцрипт", "Котлин", "Питхон")

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).

вредност се поставља на први знак низа и проверава се условом вхере. Ако се услов врати true, извршава се блок унутар петље (исказ за испис) који у конзоли избацује „И“.

Након извршавања израза, вредност се ажурира на следећи знак низа и поново се проверава стање. Ако се услов врати false, не извршава блок и вредност се ажурира на следећи знак.

Овај поступак се наставља све док се не приступи последњем знаку низа.

Филтрирајте помоћу корака извршења петље ин-ин
Понављање вредност вредност! = “!” Оутпут
1 Ја истина Ја
2 истина
3 С. истина С.
4 в истина в
5 и истина и
6 ф истина ф
7 т истина т
8 ! лажно

Занимљиви Чланци...