4.1.3 repeat ~ while 구문

repeat~while 반복문은 다른 언어에서 do~while 구문에 해당하는 것으로, 스위프트 2.0 버전부터 새로 추가되었습니다.

repeat {

<실행할 구문>

}

while <조건식>

조건식을 먼저 평가하여 실행 블록의 수행 여부를 결정하는 while 구문과 달리 repeat ~ while 구문은 코드 블록을 일단 실행한 다음에 조건식을 평가하여 반복 여부를 결정합니다. 이에 따라 repeat ~ while 구문은 실행 블록의 수행을 최소 한 번은 보장하는 특성을 가지는데, 이것이 while 구문과의 결정적 차이점입니다. while 구문은 조건식을 먼저 평가하여 false가 반환되면 실행 블록을 아예 수행하지 않으니까요. 비교를 위해 다음 구문을 살펴 봅시다.

var n = 1024
while n < 1000 {
    n = n * 2
}

print("n = \(n)")

앞서 학습한 while 구문입니다. 변수 n의 값을 1024로 입력한 다음에 반복문을 실행하면 주어진 조건식에서는 n < 1000 조건을 만족하지 못하므로 false가 됩니다. 따라서 내부의 n = n * 2 구문은 한 번도 실행되지 않은 상태로 반복문이 종료되어 버리고 n의 값은 아무런 변화 없이 처음 입력한 값 그대로 유지됩니다. 하지만 이를 repeat ~ while 구문으로 처리하면 결과는 다릅니다.

var n = 1024

repeat {
    n = n * 2
} while n < 1000
            
print("n = \(n)")
n = 2048

Last updated