Det kan være forvirrende at forstå forskellene mellem en do-while-, do-until- og while-loop. Er det det samme? Hvorfor så to forskellige teknikker?
I dette blogindlæg vil jeg vise forskellene. Men først skal vi tage et kig på det grundlæggende.
Do-Until
Do-Until-sløjfer vil gøre noget, indtil en betingelse bliver sand.
Bemærk den lige betingelse for denne sløjfe $number -eq ‘0’.
For eksempel vil nedenstående kode køre, indtil du trykker 0 på dit tastatur. Derefter og kun derefter bliver betingelsen sand (0).
do {$number=Read-Host "Enter number (Press 0 to Quit)"}until ($number -eq '0')
Do-While
Do-While-sløjfer vil gøre noget, mens en betingelse er sand.
Nem den ikke ligeværdige betingelse for denne løkke $number -ne ‘0’.
Koden nedenfor vil køre, indtil du trykker 0 på tastaturet, med andre ord, scriptet vil blive udført, så længe (mens) betingelsen ikke bliver sand (0).
do {$number=Read-Host "Enter number"}while ($number -ne 0)
While
While-sløjfer svarer til Do-While-sløjfer. Men denne type sløjfe udfører kontrollen først, mens Do-While-sløjfen udfører kontrollen efter det første gennemløb.
I det næstsidste gennemløb er $i 9, så det sidste gennemløb udføres, men derefter ikke mere.
while ($i -ne 10) {$i++Write-Host $i}
Do-Until vs. Do-While vs. While
Det følgende eksempel viser forskellene, som ikke er væsentlige ved første øjekast, men det er de.
Den første løkke kører kun én gang, fordi den kun kører, mens (så længe) $i er større end 10. Dette er ikke tilfældet. Derfor vil løkken stoppe efter den første kørsel, når kontrollen er behandlet.
Den anden løkke vil køre uendeligt, fordi $i aldrig bliver større end 10, og derfor er statemtentet sandt.
$i = 10do {Write-Output 'This is executed once.'}while ($i -gt 10)do {Write-Output 'This is done over and over again!'}until ($i -gt 10)
Sidst men ikke mindst while-løkken uden do-erklæringen. Denne løkke vil aldrig køre, fordi kontrollen er udført før løkken starter.
$i = 10while ($i -gt 10) {Write-Output 'This will never be executed.'}
Jeg håber, at jeg kunne bringe lidt lys i mørket, når det kommer til løkker med do-erklæringen.
See you next time with PowerShell!