I denne artikel lærer du om in-loop, dets brugssager og varianter.
For-in-sløjfer bruges til at køre et sæt opgaver et bestemt antal gange. Disse sløjfer gentages over alle sekvenser, såsom emner i en matrix, rækkevidde eller tegn i en streng.
Vi bruger også in-loop til at udføre nogle gentagne processer i en fast periode.
Hvorfor har vi brug for in-loop?
Forestil dig, at nogen har bedt dig om at skrive et program, der sender Hello, World! på skærmen. Din løsning vil være:
print ("Hej, Verden!")
Hvad hvis de ændrede sig og bad dig skrive et program, der udsender Hello, World! på skærmen i fem gange … Uden viden om loop kan din løsning være:
print ("Hello, World!") print ("Hello, World!") print ("Hello, World!") print ("Hello, World!") print ("Hello, World!")
Hmm. Ser tidskrævende ud at skrive lignende kode fem gange for at udføre samme arbejde. Hvis ja, hvad ville du gøre, hvis nogen beder dig om at skrive et program, der udsender Hello, World! på skærmen hundrede eller endda millioner gange?
En naiv løsning er at skrive print
udsagnet for et givet antal gange. Det lyder skørt, ikke? Men der er en bedre løsning til dette ved brug af for-in
sløjfer med få kodelinjer som:
for i in 1… 100 ( //outputs Hello world for 100 times in the screen print("Hello, World!") )
Bare rolig om syntaksen, vi vil udforske den nedenfor.
For-in Loop-syntaks
Du kan oprette en for in loop i Swift som:
for i ()
Ovenstående sløjfe itererer over et interval, og vi kan få adgang til hvert element, der returneres fra området i variabel. Hvis du ikke ved om rækkevidde, kan du tjekke artiklen: Swift Ranges.
Hvordan det virker?
- Sekvensen, der gentages, er en.
- Den er indstillet til det første tal i området, og udsagnene inde i sløjfen udføres.
- Når udsagnet er udført, opdateres det, så det indeholder den anden værdi i, og udsagnet udføres igen.
- Denne proces fortsætter, indtil slutningen af området er nået, og sløjfen stopper.
Eksempel 1: Sådan fungerer in-loop i Swift
for i in 1… 3 ( print("Hello world!. Value is (i)") )
Når du kører programmet, vil output være:
Hej Verden!. Værdien er 1 Hej verden !. Værdi er 2 Hej verden !. Værdien er 3
I ovenstående program er sekvensen, der gentages, et interval fra 1 til 3.
Værdien af i indstilles til det første tal i området (1) og opdateres til det næste nummer i området på hver iteration. Denne proces fortsætter, indtil slutningen af området (3) er nået.
For-in-løbekørselstrinIteration | Værdi returneret fra område (i) | Produktion |
---|---|---|
1 | 1 | Hej Verden!. Værdien er 1 |
2 | 2 | Hej Verden!. Værdien er 2 |
3 | 3 | Hej Verden!. Værdien er 3 |
Kassering af intervalværdien i en for-in-loop
Hvis du ikke har brug for rækkevidden inde i sløjfen, kan du kassere ved hjælp af _
(understregning) i Swift som:
til _ i ()
Eksempel 2: Kassering af intervalværdi i for-in-loop
// This example neglects value and uses half open range operator for _ in 1… <3 ( print("Hello world!") )
Når du kører programmet, vil output være:
Hej Verden! Hej Verden!
I ovenstående program er sekvensen, der gentages, et interval fra 1 til 2 på grund af brugen af halvåbent operatør (… <), som inkluderer den nedre grænse (1), men ikke den øvre grænse (3).
_
forsømmer værdien fra området (1), og udskriftserklæringen udføres. Udskriftserklæringen kaldes igen til næste iteration, og processen slutter, fordi 2 er den sidste værdi i området.
Iteration | Værdi returneret fra rækkevidde | Produktion |
---|---|---|
1 | Kasseret | Hej Verden! |
2 | Kasseret | Hej Verden! |
in-loop til faste intervaller ved hjælp af skridt
Hvis du vil have en sløjfe, der øges med en fast værdi i hver iteration, i stedet for rækkevidde, skal du bruge stride-metoden.
Eksempel 3: for-in-loop ved hjælp af stride-metoden
let interval = 2 for i in stride(from: 1, to: 10, by: interval) ( print(i) )
Når du kører programmet, vil output være:
1 3 5 7 9
I ovenstående program stride
returnerer funktionen rækkefølgen af tal: 1, 3, 5, 7, 9.
Værdien af i er indstillet til det første nummer i sekvensen (1), og udskriftserklæringen inde i sløjfen udføres, som udlæser "1" i konsollen.
Når sætningen er udført, opdateres værdien af i til en anden værdi (3), og udskriftserklæringen kaldes igen. Denne proces fortsætter, indtil alle elementerne i sekvensen er tilgængelige.
For-in-loop-udførelsestrin ved hjælp af strideVærdi | Betingelse (værdi <slut) | i (Output) |
---|---|---|
1 | 1 <10 (sandt) | 1 |
1 + 2 = 3 | 3 <10 (sandt) | 3 |
1 + 2 * 2 = 5 | 5 <10 (sandt) | 5 |
1 + 3 * 2 = 7 | 7 <10 (sandt) | 7 |
1 + 4 * 2 = 9 | 9 <10 (sand) | 9 |
1 + 5 * 2 = 11 | 11 <10 (falsk) | Stopper |
Hvordan får man adgang til elementer i en samling ved hjælp af in-loop?
Antag at du har en række strenge som nedenfor. Hvis du ikke kender til array, så tænk på array som en enkelt container, der kan gemme mere end én værdi. For mere detaljeret forklaring, se Swift Arrays.
lad 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ærdi indstilles til strengens første tegn og kontrolleres med hvor-betingelsen. Hvis betingelsen vender tilbage true
, udføres blokken inde i sløjfen (udskrivning), der udlæser "I" i konsollen.
Når udsagnet er udført, opdateres værdien til næste tegn i strengen, og igen kontrolleres tilstanden. Hvis betingelsen vender tilbage false
, udfører den ikke blokken, og værdien opdateres til næste tegn.
Denne proces fortsætter, indtil den sidste karakter i strengen er adgang.
Filtrer ved hjælp af in-loop-udførelsestrinIteration | værdi | værdi! = “!” | Produktion |
---|---|---|---|
1 | jeg | sand | jeg |
2 | ♥ | sand | ♥ |
3 | S | sand | S |
4 | w | sand | w |
5 | jeg | sand | jeg |
6 | f | sand | f |
7 | t | sand | t |
8 | ! | falsk |