Snabb in-loop: Hur man använder den och varför?

I den här artikeln lär du dig om in-loop, dess användningsfall och varianter.

For-in-loopar används för att köra en uppsättning uppgifter under ett visst antal gånger. Dessa loopar itererar över alla sekvenser som objekt i en matris, intervall eller tecken i en sträng.

Vi använder också in-loop för att göra några repetitiva processer under en viss tid.

Varför behöver vi in-loop?

Tänk dig att någon sa till dig att skriva ett program som levererar Hello, World! på skärmen. Din lösning blir:

 skriva ut ("Hello, World!")

Vad händer om de ändrade sig och sa att du skulle skriva ett program som sänder Hello, World! på skärmen i fem gånger … Utan kunskapen om loop kan din lösning vara:

 print ("Hello, World!") print ("Hello, World!") print ("Hello, World!") print ("Hello, World!") print ("Hello, World!")

Hmm. Ser tidskrävande ut att skriva liknande kod fem gånger för att utföra samma arbete. Om så är fallet, vad skulle du göra om någon ber dig att skriva ett program som sänder Hello, World! på skärmen hundra eller till och med miljoner gånger?

En naiv lösning är att skriva printuttalandet för ett visst antal gånger. Låter galet, eller hur? Men det finns en bättre lösning för detta med användning av for-inloopar med få kodrader som:

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

Oroa dig inte för syntaxen, vi kommer att utforska den nedan.

For-in Loop-syntax

Du kan skapa en for in loop i Swift som:

 för i () 

Ovanstående slinga itererar över ett intervall och vi kan komma åt varje element som returneras från intervallet i variabel. Om du inte vet om räckvidd kan du kolla in artikeln: Swift Ranges.

Hur det fungerar?

  • Sekvensen som iteras igen är en.
  • Den är inställd på det första numret i intervallet och uttalandena inuti slingan körs.
  • När uttalandet har körts uppdateras det för att innehålla det andra värdet i och uttalandet körs igen.
  • Denna process fortsätter tills slutet av intervallet uppnås och slingan slutar.

Exempel 1: Hur in-loop fungerar i Swift

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

När du kör programmet blir resultatet:

Hej världen!. Värde är 1 Hello world !. Värde är 2 Hello world !. Värde är 3

I ovanstående program är sekvensen som itreras över ett intervall från 1 till 3.

Värdet på i ställs in till det första numret i intervallet (1) och uppdateras till nästa nummer i intervallet vid varje iteration. Denna process fortsätter tills slutet av intervallet (3) har uppnåtts.

Steg för körning av in-loop
Iteration Värde som returneras från intervall (i) Produktion
1 1 Hej världen!. Värde är 1
2 2 Hej världen!. Värde är 2
3 3 Hej världen!. Värde är 3

Kassera intervallvärdet i en in-loop

Om du inte har någon användning för intervallvärdet inuti slingan kan du kasta att använda _(understrykning) i Swift som:

 för _ in () 

Exempel 2: Kassera intervallvärde i in-loop

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

När du kör programmet blir resultatet:

Hej världen! Hej världen!

I ovanstående program är sekvensen som itreras över ett intervall från 1 till 2 på grund av användningen av en halvöppen områdesoperator (… <) som inkluderar den nedre gränsen (1) men inte den övre gränsen (3).

_försummar värdet från intervallet (1) och utskriftssatsen utförs. Utskriftsutdraget anropas igen för nästa iteration och processen avslutas eftersom 2 är det sista värdet i intervallet.

For-in loop exekveringssteg utan intervallvärden
Iteration Värde returnerat från intervall Produktion
1 Kasseras Hej världen!
2 Kasseras Hej världen!

in-loop för fasta intervaller med steg

Om du vill ha en slinga som ökar med något fast värde i varje iteration istället för intervall måste du använda stegmetoden.

Exempel 3: for-in-loop med stegmetod

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

När du kör programmet blir resultatet:

 1 3 5 7 9 

I ovanstående program stridereturnerar funktionen sekvensen av siffror: 1, 3, 5, 7, 9.

Värdet på i ställs in till det första numret i sekvensen (1), och utskriftsuttrycket inuti slingan exekveras som matar ut "1" i konsolen.

Efter att uttalandet har körts uppdateras värdet på i till ett annat värde (3) och utskriftsmeddelandet anropas igen. Denna process fortsätter tills alla element i sekvensen nås.

For-in loop-körningssteg med steg
Värde Villkor (värde <Slut) i (Output)
1 1 <10 (sant) 1
1 + 2 = 3 3 <10 (sant) 3
1 + 2 * 2 = 5 5 <10 (sant) 5
1 + 3 * 2 = 7 7 <10 (sant) 7
1 + 4 * 2 = 9 9 <10 (sant) 9
1 + 5 * 2 = 11 11 <10 (falskt) Stannar

Hur får jag tillgång till element i en samling med hjälp av in-loop?

Antag att du har en rad strängar enligt nedan. Om du inte känner till array, tänk på array som en enda behållare som kan lagra mer än ett värde. För mer detaljerad förklaring, se Swift Arrays.

 låt programmeringLanguages ​​= ("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ärdet är inställt på strängens första tecken och kontrolleras med varvillkoret. Om villkoret återkommer trueutförs blocket inuti slingan (utskriftsuttalande) som matar ut "I" i konsolen.

När uttalandet har körts uppdateras värdet till nästa tecken i strängen och igen kontrolleras villkoret. Om villkoret återkommer falsekörs det inte blocket och värdet uppdateras till nästa tecken.

Denna process fortsätter tills den sista karaktären i strängen är åtkomlig.

Filtrera med steg för körning av in-loop
Iteration värde värde! = “!” Produktion
1 Jag Sann Jag
2 Sann
3 S Sann S
4 w Sann w
5 i Sann i
6 f Sann f
7 t Sann t
8 ! falsk

Intressanta artiklar...