Swift에는 루프를 작성하는 여러 방법이 있지만 그들 기저에 깔려있는 매커니즘은 모두 같다 – 조건이 거짓으로 평가될 때까지 해당 코드를 반복적으로 실행하라.
Swift서 가장 일반적인 루프는 for 루프문이다. – 이것은 배열과 범위를 반복하고 루프가 한 번 돌아갈 때마다 하나의 항목을 꺼내 상수에 할당한다.
let count = 1…10
for number in count {
print(“Number is \(number)”)
}
let albums = [“Red”, “1989”, “Reputation”]
for album in albums {
print(“\(album) is on Apple Music”)
}
print(“Players gonna “)
for _ in 1…5 {
print(“play”)
}
루프문을 작성하는 두 번째 방법은 while을 사용하는 것이다. – 확인할 조건을 주고, 그 조건이 거짓이 될 때까지 루프문의 코드는 계속해서 실행된다.
예를 들어, 우리는 아이가 숨바꼭질을 하면서 숫자를 셀 때 while 루프문을 사용할 수 있다.
var number = 1
while number <= 20 {
print(number)
number += 1
}
print(“Ready or not, here I come!”)
루프문을 작성하는 세 번째 방법은 자주 사용되진 않지만 배우기 쉽다. – 이것은 반복 루프문이라 불리고 확인해야할 조건이 마지막에 온다는 것을 제외하곤 while 루프문과 같다.
따라서 우리는 숨바꼭질 예제를 다음과 같이 다시 쓸 수 있다.
var number = 1
repeat {
print(number)
number += 1
} while number <= 20
print(“Ready or not, here I come!”)
반복 루프문에서는 조건이 마지막에 오기 때문에 루프문 안의 코드는 항상 적어도 한 번은 실행된다.
반면 while 루프문은 첫 실행 전에 조건을 확인한다.
while false {
print(“This is false”)
}
Xcode 는 저 print() 문이 실행되지 않는다고 경고도 줄 것이다.
repeat {
print(“This is false”)
} while false
break 키워드를 사용해서 루프를 언제든지 빠져나갈 수 있다.
var countdown = 10
while countDown >= 0 {
print(countDown)
countdown -= 1
}
print(“Blast off!”)
while countdown >= 0 {
print(countdown)
if countdown == 4 {
print(“I’m bored. Let’s go now!”)
break
}
countdown -= 1
}
이 변화로, countDown이 4가 되면 우주비행사의 메세지가 출력되고 나머지 루프는 건너뛰어진다.
루프문 안에 루프를 넣는 것을 nested loop(중첩 루프)라고 한다.
내부 루프와 외부 루프를 동시에 깨고 나오려는 것은 드물지 않다.
for i in 1…10 {
for j in 1…10 {
let product = i * j
print(“\(i) * \(j) is \(product)”)
}
}
만약 우리가 도중에 종료하고싶다면 두 가지를 실행해야한다.
outerLoop: for i in 1…10 {
for j in 1…10 {
let product = i * j
print(“\(i) * \(j) is \(product)”)
}
}
outerLoop for i in 1…10 {
for j in 1…10 {
let product = i * j
print(“\(i) * \(j) is \(product)”)
if product == 50 {
print(“It’s a bullseye!”)
break outerLoop
}
}
일반적인 break로는 내부 루프만 종료된다 – 외부루프는 중단된 지점에서 계속된다.
break 키워드는 루프를 종료시킨다.
하지만 만약 현재 항목만 넘기고 다음 항목은 계속 지속하고 싶다면 continue를 쓰면 된다.
for i in 1…10 {
if i % 2 == 1 {
continue
}
print(i)
}
나머지 연산자는 루프의 각 숫자에 2가 몇 번 들어가는지 알아낸 다음 나머지를 반환한다. 따라서, 만약 1이 남았다면 이것은 그 숫자가 홀수라는 것을 의미하고
우리는 이것을 건너뛰기 위해 continue를 사용한다.
무한 루프를 만들기 위해 while 루프문을 사용하는 것은 일반적이다. 무한루프는 끝이 없거나 네가 준비가 되었을 때만 끝나는 루프이다.
아이폰의 모든 앱들은 실행을 시작한 뒤 네가 이벤트를 끝내기로 선택할 때까지 이벤트를 계속해서 주시하고 있기 때문에 무한 루프를 사용한다.
무한 루프를 만들기 위해서 true를 조건으로 사용한다.
True는 항상 참이기 때문에 그 루프는 영원히 반복될 것이다.
주의 : 루프를 종료시키는 검사가 있는지 확인해라 그렇지 않으면 절대 끝나지 않는다.
예를 들어, John Cage의 piece 4’33”을 출력하기 위해 while true 를 사용할 것이다 – 만약 뭔지 모른다면, 이것은 4분 33초동안 완전한 침묵으로 유명하다.
var counter = 0
while true {
print(“ “)
counter += 1
if counter == 273 {
break
}
}