Rask for-in-løkke: Hvordan bruker jeg den og hvorfor?

I denne artikkelen vil du lære om for-in loop, brukssaker og varianter.

For-in-løkker brukes til å kjøre et sett med oppgaver for et bestemt antall ganger. Disse sløyfene gjentas over alle sekvenser, for eksempel elementer i en matrise, rekkevidde eller tegn i en streng.

Vi bruker også in-loop til å gjøre noen repeterende prosesser i en fast periode.

Hvorfor trenger vi for-in loop?

Tenk deg at noen ba deg skrive et program som gir ut Hello, World! på skjermen. Løsningen din vil være:

 utskrift ("Hello, World!")

Hva om de ombestemte seg og ba deg skrive et program som gir ut Hello, World! på skjermen i fem ganger … Uten kunnskapen om loop kan løsningen din være:

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

Hmm. Ser tidkrevende ut å skrive lignende kode fem ganger for å utføre samme arbeid. I så fall hva ville du gjort hvis noen ber deg om å skrive et program som gir ut Hello, World! på skjermen hundrevis eller til og med millioner ganger?

En naiv løsning er å skrive printuttalelsen for gitt antall ganger. Høres gal ut, ikke sant? Men det er en bedre løsning for dette med bruk av for-insløyfer med få kodelinjer som:

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

Ikke bekymre deg for syntaksen, vi skal utforske den nedenfor.

For-in Loop-syntaks

Du kan opprette en for in loop i Swift som:

 for i ( ) 

Ovennevnte sløyfe går over et område, og vi kan få tilgang til hvert element som returneres fra området i variabel. Hvis du ikke vet om rekkevidde, kan du sjekke artikkelen: Swift Ranges.

Hvordan det fungerer?

  • Sekvensen som gjentas over er en.
  • Dette er satt til det første tallet i området, og utsagnene i sløyfen utføres.
  • Etter at setningen er utført, oppdateres den for å inneholde den andre verdien i og setningen kjøres på nytt.
  • Denne prosessen fortsetter til slutten av området er nådd og sløyfen stopper.

Eksempel 1: Slik fungerer in-loop i Swift

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

Når du kjører programmet, vil utdataene være:

Hei Verden!. Verdien er 1 Hello world !. Verdien er 2 Hello world !. Verdien er 3

I det ovennevnte programmet er sekvensen som gjentas over et område fra 1 til 3.

Verdien av i er satt til det første tallet i området (1), og oppdateres til neste nummer i området på hver iterasjon. Denne prosessen fortsetter til slutten av området (3) er nådd.

For-in-løpegjennomføringstrinn
Iterasjon Verdien returneres fra område (i) Produksjon
1 1 Hei Verden!. Verdien er 1
2 2 Hei Verden!. Verdien er 2
3 3 Hei Verden!. Verdien er 3

Forkast rekkeviddeverdien i en for-in-sløyfe

Hvis du ikke har bruk for rekkevidden i løkken, kan du forkaste å bruke _(understreke) i Swift som:

 for i ( ) 

Eksempel 2: Forkast områdeverdi i in-loop

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

Når du kjører programmet, vil utdataene være:

Hei Verden! Hei Verden!

I det ovennevnte programmet er sekvensen som gjentas over et område fra 1 til 2 på grunn av bruken av halvåpent områdeoperatør (… <) som inkluderer den nedre grensen (1) men ikke den øvre grensen (3).

_forsømmer verdien fra området (1) og utskriftsuttalelsen utføres. Utskriftserklæringen kalles igjen for neste iterasjon, og prosessen avsluttes fordi 2 er den siste verdien i området.

For-in-løpekjøringstrinn uten områdeverdier
Iterasjon Verdien returneres fra rekkevidde Produksjon
1 Forkastet Hei Verden!
2 Forkastet Hei Verden!

for-in-løkke for faste intervaller ved bruk av skritt

Hvis du vil ha en sløyfe som øker med en fast verdi i hver iterasjon, i stedet for rekkevidde, må du bruke skrittmetoden.

Eksempel 3: for-in loop ved hjelp av stride-metoden

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

Når du kjører programmet, vil utdataene være:

 1 3 5 7 9 

I det ovennevnte programmet stridereturnerer funksjonen tallsekvensen: 1, 3, 5, 7, 9.

Verdien av i er satt til det første nummeret i sekvensen (1), og utskriftsuttalelsen inne i sløyfen blir utført som sender ut "1" i konsollen.

Etter at setningen er utført, oppdateres verdien til i til en annen verdi (3), og utskriftsuttalelsen kalles på nytt. Denne prosessen fortsetter til alle elementene i sekvensen er tilgjengelig.

For-in loop utførelse trinn ved hjelp av skritt
Verdi Tilstand (Verdi <Slutt) i (utgang)
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 (usann) Stopper

Hvordan få tilgang til elementer i en samling ved hjelp av in-loop?

Anta at du har en rekke strenger som nedenfor. Hvis du ikke vet om array, kan du tenke på array som en enkelt container som kan lagre mer enn én verdi. For mer detaljert forklaring, se Swift Arrays.

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

verdien er satt til det første tegnet i strengen og blir sjekket med hvor-tilstanden. Hvis tilstanden kommer tilbake true, utføres blokken inne i sløyfen (utskriftsuttalelse) som sender ut "I" i konsollen.

Etter at setningen er utført, oppdateres verdien til neste tegn i strengen, og igjen blir tilstanden sjekket. Hvis tilstanden returnerer false, utfører den ikke blokken, og verdien oppdateres til neste tegn.

Denne prosessen fortsetter til det siste tegnet i strengen er tilgjengelig.

Filtrer ved hjelp av trinn for gjennomføring av for-loop
Iterasjon verdi verdi! = “!” Produksjon
1 Jeg ekte Jeg
2 ekte
3 S ekte S
4 w ekte w
5 Jeg ekte Jeg
6 f ekte f
7 t ekte t
8 ! falsk

Interessante artikler...