Ātra ieslēgšanās cilpa: kā to izmantot un kāpēc?

Šajā rakstā jūs uzzināsit par for-in ciklu, tā lietošanas gadījumiem un variantiem.

For-in cilpas tiek izmantotas, lai noteiktu laiku veiktu uzdevumu kopu. Šīs cilpas atkārto visas sekvences, piemēram, masīva vienumus, diapazonu vai virknes rakstzīmes.

Mēs arī izmantojam ieslēgšanas ciklu, lai noteiktu laiku veiktu dažus atkārtotus procesus.

Kāpēc mums ir nepieciešama ievadīšanas cilpa?

Iedomājieties, kāds jums lika uzrakstīt programmu, kas izdod Sveiki, Pasaule! ekrānā. Jūsu risinājums būs:

 drukāt ("Sveika, pasaule!")

Ja nu, viņi mainīja savas domas un lika jums uzrakstīt programmu, kas izdod Sveiki, Pasaule! ekrānā piecas reizes … Nezinot cilpu, jūsu risinājums varētu būt:

 drukāt ("Sveika, pasaule!") Drukāt ("Sveika, pasaule!") Drukāt ("Sveika, pasaule!") Drukāt ("Sveika, pasaule!") Drukāt ("Sveika, pasaule!")

Hmm. Izskatās, ka ir laikietilpīgi piecas reizes rakstīt līdzīgu kodu, lai veiktu to pašu darbu. Ja tā, tad ko jūs darītu, ja kāds pieprasītu, lai jūs uzrakstītu programmu, kuras rezultāti ir Sveiki, Pasaule! simt vai pat miljonu reižu ekrānā?

Viens naivs risinājums ir uzrakstīt printpaziņojumu norādītajam reižu skaitam. Izklausās traki, vai ne? Bet tam ir labāks risinājums, izmantojot for-incilpas ar dažām koda rindiņām kā:

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

Neuztraucieties par sintaksi, mēs to izpētīsim tālāk.

Ienākošās cilpas sintakse

Pakalpojumā Swift varat izveidot for in ciklu kā:

 vietnei () 

Iepriekš minētā cilpa atkārtojas diapazonā, un mēs varam piekļūt katram elementam, kas atgriezts no diapazona mainīgajā. Ja nezināt par diapazonu, varat apskatīt rakstu: Swift Ranges.

Kā tas strādā?

  • Atkārtotā secība ir a.
  • Tiek iestatīts uz pirmo skaitli diapazonā, un tiek izpildīti priekšraksti cilpas iekšpusē.
  • Kad izraksts ir izpildīts, tas tiek atjaunināts, lai tajā iekļautu otro vērtību, un izraksts tiek izpildīts vēlreiz.
  • Šis process turpinās, līdz tiek sasniegta diapazona beigas un cilpa apstājas.

1. piemērs: Kā ienākošā cilpa darbojas programmā Swift

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

Palaidot programmu, izeja būs:

Sveika pasaule!. Vērtība ir 1 Hello world !. Vērtība ir 2 Sveika pasaule !. Vērtība ir 3

Iepriekš minētajā programmā atkārtotā secība ir diapazonā no 1 līdz 3.

I vērtība tiek iestatīta uz pirmo skaitli diapazonā (1) un tiek atjaunināta līdz nākamajam diapazona skaitlim katrā atkārtojumā. Šis process turpinās, līdz tiek sasniegta diapazona (3) beigas.

For-in cilpas izpildes darbības
Atkārtojums Vērtība, kas atgriezta no diapazona (i) Rezultāts
1 1 Sveika pasaule!. Vērtība ir 1
2 2 Sveika pasaule!. Vērtība ir 2
3 3 Sveika pasaule!. Vērtība ir 3

Atmetot diapazona vērtību for-in ciklā

Ja diapazona vērtība cilpas iekšpusē netiek izmantota _, Swift programmā (pasvītrojums) varat izmest kā:

 par _ iekšā () 

2. piemērs: diapazona vērtības atmešana ievades ciklā

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

Palaidot programmu, izeja būs:

Sveika pasaule! Sveika pasaule!

Iepriekš minētajā programmā iterējamā secība ir diapazonā no 1 līdz 2, jo tiek izmantots daļēji atvērta diapazona operators (… <), kas ietver apakšējo robežu (1), bet ne augšējo robežu (3).

_novārtā atstāj vērtību diapazonā (1), un tiek izpildīts izdrukas paziņojums. Drukas paziņojums tiek atkārtoti izsaukts nākamajai iterācijai, un process beidzas, jo 2 ir pēdējā vērtība diapazonā.

Ieslēgšanas cikla izpildes darbības bez diapazona vērtībām
Atkārtojums Vērtība atgriezta no diapazona Rezultāts
1 Izmests Sveika pasaule!
2 Izmests Sveika pasaule!

for-in cilpa fiksētiem intervāliem, izmantojot soli

Ja vēlaties cilpu, kas katrā atkārtojumā palielinās ar noteiktu fiksēto vērtību, nevis diapazonu, jums jāizmanto soļa metode.

3. piemērs: ievadīšanas cilpa, izmantojot soļu metodi

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

Palaidot programmu, izeja būs:

 1 3 5 7 9 

Iepriekš minētajā programmā stridefunkcija atgriež skaitļu secību: 1, 3, 5, 7, 9.

I vērtība tiek iestatīta uz secības pirmo numuru (1), un tiek izpildīts drukas paziņojums cilpas iekšpusē, kas konsolē izvada "1".

Pēc tam, kad izraksts ir izpildīts, i vērtība tiek atjaunināta uz citu vērtību (3) un izdrukātais paziņojums tiek izsaukts vēlreiz. Šis process turpinās, līdz tiek piekļūt visiem secības elementiem.

For-in cilpas izpildes darbības, izmantojot soli
Vērtība Nosacījums (vērtība <beigas) i (izeja)
1 1 <10 (taisnība) 1
1 + 2 = 3 3 <10 (taisnība) 3
1 + 2 * 2 = 5 5 <10 (taisnība) 5
1 + 3 * 2 = 7 7 <10 (taisnība) 7
1 + 4 * 2 = 9 9 <10 (taisnība) 9
1 + 5 * 2 = 11 11 <10 (nepatiesa) Apstājas

Kā piekļūt kolekcijas elementiem, izmantojot for-in loop?

Pieņemsim, ka jums ir virkņu virkne, kā norādīts zemāk. Ja nezināt par masīvu, domājiet par masīvu kā vienu konteineru, kurā var uzglabāt vairākas vērtības. Detalizētāku skaidrojumu skatiet sadaļā Swift Arrays.

 ļaujiet programmētLanguages ​​= ("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).

vērtība tiek iestatīta uz virknes pirmo rakstzīmi un tiek pārbaudīta ar nosacījumu where. Ja nosacījums atgriežas true, tiek izpildīts bloks cilpas iekšpusē (izdrukas paziņojums), kas konsolē izvada "I".

Pēc priekšraksta izpildes vērtība tiek atjaunināta uz virknes nākamo rakstzīmi un atkal tiek pārbaudīts nosacījums. Ja nosacījums atgriežas false, tas neizpilda bloku un vērtība tiek atjaunināta uz nākamo rakstzīmi.

Šis process turpinās, līdz tiek atvērta virknes pēdējā rakstzīme.

Filtrējiet, izmantojot ieslēgšanas cikla izpildes darbības
Atkārtojums vērtība vērtība! = “!” Rezultāts
1 Es taisnība Es
2 taisnība
3 S taisnība S
4 w taisnība w
5 i taisnība i
6 f taisnība f
7 t taisnība t
8 ! nepatiesa

Interesanti raksti...