I denne artikkelen vil du lære å lage mens og gjenta … mens du sløyfer i Swift programmering.
I forrige artikkel lærte vi om for-in-loop for å kjøre et sett med oppgaver for et bestemt antall ganger. I denne artikkelen lærer du å bruke while
og repeat… while
som et alternativ til for-in loop når antall iterasjon er ukjent.
En stund-løkke utfører et sett med utsagn til en tilstand blir false
. Denne typen sløyfer brukes best når antall iterasjoner ikke er kjent før den første iterasjonen begynner. Swift tilbyr to typer mens løkker:
1. Swift mens Loop
Denne sløyfen evaluerer tilstanden ved starten av hver passering gjennom sløyfen.
Syntaksen for while loop er:
while (TestExpression) ( // statements )
Hvordan mens loop fungerer?
Det TestExpression
er et boolsk uttrykk.
Hvis den TestExpression
blir evaluert til true
,
- uttalelser i mens loop utføres.
- og
TestExpression
blir evaluert på nytt.
Denne prosessen fortsetter til den TestExpression
blir evaluert til false
. Hvis TestExpression
evaluerer til false
, mens loop er avsluttet.
Flytskjema for mens Loop
Eksempel 1: While Loop
var currentLevel:Int = 0, finalLevel:Int = 5 let gameCompleted = true while (currentLevel <= finalLevel) ( //play game if gameCompleted ( print("You have passed level (currentLevel)") currentLevel += 1 ) ) print("outside of while loop")
Når du kjører programmet, vil utdataene være:
Du har bestått nivå 0 Du har bestått nivå 1 Du har bestått nivå 2 Du har bestått nivå 3 Du har bestått nivå 4 Du har bestått nivå 5 utenfor mens loop
I det ovennevnte programmet initialiseres variabelen currentLevel og finalLevel til 0 og konstant gameCompleted initialiseres til true
.
I hver iterasjon av mens loop kontrollerer den tilstanden currentLevel <= finalLevel
. Hvis tilstanden kommer tilbake true
, utsettes utsagnene mens sløyfen ellers slutter sløyfen.
Iterasjon | Tilstand (nåværende nivå <= endelig nivå) | Produksjon |
---|---|---|
1 | 0 <= 5 (sant) | Du har bestått nivå 0 |
2 | 1 <= 5 (sant) | Du har bestått nivå 1 |
3 | 2 <= 5 (sant) | Du har bestått nivå 2 |
4 | 3 <= 5 (sant) | Du har bestått nivå 3 |
5 | 4 <= 5 (sant) | Du har bestått nivå 4 |
6 | 5 <= 5 (sant) | Du har bestått nivå 5 |
7 | 6 <= 5 (usann) | utenfor mens løkken |
2. Gjenta mens Loop
Denne sløyfen evaluerer tilstanden på slutten av hver passering gjennom sløyfen. Gjenta … mens sløyfe ligner mens sløyfe med en nøkkelforskjell. Body of repeat … while loop utføres en gang før testuttrykket blir sjekket.
Syntaksen for gjenta … mens sløyfe er:
repeat ( // statements… ) while (testExpression)
Hvordan gjenta … mens loop fungerer?
Gjenta kroppen … mens sløyfen utføres en gang (før du sjekker testuttrykket). Først da blir testExpression sjekket.
Hvis testExpression blir evaluert til sant, utføres setninger inne i sløyfen, og testExpression blir evaluert på nytt. Denne prosessen fortsetter til testExpression blir evaluert til false
.
Når testekspresjon er false
, gjentar … mens sløyfen avsluttes.
Flytskjema for gjentakelse… mens Loop
Eksempel 2: Gjenta mens Loop
var currentLevel:Int = 0, finalLevel:Int = 5 let gameCompleted = true repeat ( //play game if gameCompleted ( print("You have passed level (currentLevel)") currentLevel += 1 ) ) while (currentLevel <= finalLevel) print("outside of repeat while loop")
Når du kjører programmet, vil utdataene være:
Du har bestått nivå 0 Du har bestått nivå 1 Du har bestått nivå 2 Du har bestått nivå 3 Du har bestått nivå 4 Du har bestått nivå 5 utenfor repetisjon mens sløyfe
I eksemplet ovenfor, for første gang kjøres utsagnene i sløyfen. Og for neste iterasjon, sjekker den tilstanden currentLevel <= finalLevel
.
Hvis tilstanden kommer tilbake true
, utsettes utsagnene inne mens sløyfen ellers slutter sløyfen.
Iterasjon | Tilstand (nåværende nivå <= endelig nivå) | Produksjon |
---|---|---|
1 | 0 <= 5 (sant) | Du har bestått nivå 0 |
2 | 1 <= 5 (sant) | Du har bestått nivå 1 |
3 | 2 <= 5 (sant) | Du har bestått nivå 2 |
4 | 3 <= 5 (sant) | Du har bestått nivå 3 |
5 | 4 <= 5 (sant) | Du har bestått nivå 4 |
6 | 5 <= 5 (sant) | Du har bestått nivå 5 |
7 | 6 <= 5 (usann) | utenfor repetisjon mens sløyfe |
Selv om begge while
og repeat while
loop har samme utføringstrinn, blir tilstanden currentLevel <= finalLevel
på repeat while
loop bare utført etter at uttalelsene er inne i den.
Men i while
, blir tilstanden sjekket i begynnelsen før du utfører uttalelsene inni den.
3. Uendelig mens Loop
Hvis testuttrykket aldri evalueres til false
, blir kroppen av while
og repeat… while
loop utført uendelig mange ganger.
Eksempel 3: Infinite while Loop
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Når du kjører programmet, vil utdataene være:
Hei Verden! Hei Verden!…
Når du kjører programmet, utfører begge sløyfene print("Hello, World!")
uendelig antall ganger. Så du kan se kontinuerlig produksjon Hello, World! i konsollen.