while 구문은 단순히 주어진 조건식의 결과가 false가 될 때까지 실행 구문을 계속 반복한다. 말하자면 while 구문은 '조건을 만족하는 동안은 계속 실행'되는 것이다. while 구문은 다음과 같을 때 사용하는게 좋다.
- 실행 횟수가 명확하지 않을 때
- 직접 실행해보기 전까지는 실행 횟수를 알 수 없을 때
- 실행 횟수를 기반으로 할 수 없는 조건일 때
실행횟수가 명확하지 않을 경우 while 문을 쓴다고 이해하면 된다.
while 구문의 형식은 다음과 같다.
while <조건식> {
<실행 구문>
}
while 키워드 다음엔 조건이 사용되는데, 조건식은 반드시 참(true)나 거짓(false)을 결과값으로 반환해야 한다. 조건식의 값이 true일 동안은 실행 블록 내의 코드가 반복되어 수행되나 false를 반환하는 순간 반복문은 즉시 종료되고 코드블록을 빠져나간다.
var n = 2
while n < 1000 {
n *= 2
}
print("n = \(n)")
/* 실행결과
1024
n에 계속해서 2를 곱해주다가 1,000 보다 커지는 순간 반복을 종료해주는 예시이다.
while 구문에 조건식 대신 true를 직접 넣으면 계속 반복되는 무한 루프가 만들어진다. 코드 블록을 빠져나올 수 있도록 break문을 넣어주지 않는다면 프로그램은 프로세스가 종료되지 않는 한 영원히 실행 블록을 반복하게 된다.
while true {
...
}
모바일 앱의 특성상 사용자의 액션을 기다리는 동안 입력 대기 상태를 유지하게 되는데, 앱이 종료되지 않은 채로 대기 상태를 유지하기 위해선 이벤트 루프라는 무한루프를 만들어 실행해야한다. 이럴 때 쓰이는게 바로 위의 무한루프 구문이다.
이벤트란?
의미 있는 특정 사건이 발생하는 것을 말하므로 사용자가 버튼을 클릭하는 사건, 사용자가 화면을 위 아래로 미는 사건, 특정 영역을 터치하는 사건 등이다.
repeat ~ while 구문
repeat ~ while 반복문은 다른 언어에선 do ~ while 구문에 해당하는 것으로 조건에 제약을 받지 않고 구문의 실행 블록의 수행을 최소 한 번은 하게 되는 구문이다. 형식은 다음과 같다.
repeat {
<실행할 구문>
}
while <조건식>
비교를 위해 두 가지 구문을 살펴보자.
var n = 1024
while n < 1000 {
n *= 2
}
print("n = \(n)")
/* 실행결과
n = 1024
*/
var n = 1024
repeat {
n *= 2
}
while n < 1000
print("n = \(n)")
/* 실행결과
n = 2048
*/
같은 조건이지만 n의 최종 값이 다르게 나타난다. 왜냐하면 repeat ~ while 구문은 실행 블록이 한 번 수행된 상태에서 조건식을 평가하므로 비록 조건식의 결과가 false 일지라도 이미 n *= 2 구문이 한 번 실행되어 n의 값은 2048이 된다.
출처 : 꼼꼼한 재은씨의 Swift 문법편
'Swift > 문법' 카테고리의 다른 글
스위프트(Swift) - 조건문 Ⅱ. guard 구문 (0) | 2022.04.30 |
---|---|
스위프트(Swift) - 조건문 Ⅰ. if 구문 (0) | 2022.04.29 |
스위프트(Swift) - 반복문Ⅰ. for ~ in구문 (0) | 2022.04.27 |
스위프트(Swift) - 연산자 (0) | 2022.04.26 |
스위프트(Swift) - 멀티 라인 스트링 (0) | 2022.04.25 |