스위프트에서는 반복되는 코드를 처리하는 방법 중 for
문을 제공합니다.
주어진 조건이 참인경우 코드를 반복적으로 실행하고 거짓이 된 경우 반복을 중단합니다.
for
키워드를 사용후 원하는 상수명을 작성 in
조건 {}
괄호안에 반복되는 코드를 작성합니다. (상수는 기존에 사용한 상수여도 관계없다)
상수를 사용하지 않는 경우 _
와일드카드로 사용해도 무관합니다.
let albums = ["Red", "1989", "Reputation"]
for album in albums {
print("\(album) is on Apple Music")
}
// 결과
Red is on Apple Music
1989 is on Apple Music
Reputation is on Apple Music
let testConstant = 100
for testConstant in 1...3 {
print(testConstant)
}
// 결과
1
2
3
스위프트에서는 반복되는 코드를 처리하는 방법 중 while
문을 제공합니다.
while
키워드를 사용한 후 조건을 작성한 후 {}
괄호안에 반복되는 코드를 작성합니다.
조건이 참인 경우 코드를 실행하고 거짓이 된 경우 중단합니다.
var number = 1
while number <= 20 {
print(number)
number += 1
}
for, while 둘 중 어느경우에 사용해야 할까?
스위프트에서는 반복되는 코드를 처리하는 방법 중 repeat
문을 제공합니다.
가장 큰 특징은 repeat
내부의 코드는 조건이 참이든 거짓이든 적어도 한번은 항상 실행됩니다.
repeat {
print("This is false")
} while false
repeat문을 사용하는 예시
// MARK - While
let numbers = [1, 2]
var random = numbers.shuffled()
while random == numbers {
random = numbers.shuffled()
print("랜덤")
}
// MARK - Repeat
let repeatNumbers = [1, 2]
var repeatRandom: [Int]
repeat {
repeatRandom = repeatNumbers.shuffled()
print("repeat랜덤")
} while repeatRandom == repeatNumbers
→ while문과 비교하면 반복되는 코드 사용을 줄일 수 있습니다. while문에서는 shuffled를 한 후에 비교해야 하기 때문입니다.
중간에 반복문을 중지시키고 싶을 때 break
키워드를 사용하면 원하는 위치에서 반복문을 중지시킬수 있습니다.
var countDown = 10
while countDown >= 0 {
print(countDown)
if countDown == 4 {
print("I'm bored. Let's go now!")
break
}
countDown -= 1
}
중첩으로 반복문을 사용한 경우 동시에 중단시켜야 하는 경우 외부루프에 레이블을 지정합니다.
break
를 외부루프로 지정합니다.
for i in 1...2 {
for j in 1...2 {
if j == 2 {
break
}
print ("i: \(i) , j: \(j)")
}
print ("i: \(i)")
}
// 실행결과
i: 1 , j: 1
i: 1
i: 2 , j: 1
i: 2
outerLoop: for i in 1...2 {
for j in 1...2 {
if j == 2 {
break outerLoop
}
print ("i: \(i) , j: \(j)")
}
print ("i: \(i)")
}
// 실행결과
i: 1 , j: 1
반복문에서 항목을 건너뛰고 다음 항목에서 반복을 진행하고 싶은경우 continue
키워드를 사용합니다.
반복문을 건너뛴다는 이야기는 괄호내부코드 전체를 건너뛴다는 이야기와 같습니다.
for i in 1...10 {
if i % 2 == 1 {
continue
}
print(i)
}
무한루프를 사용할 때는 while문을 자주 사용합니다. 무한루프는 끝이 없거나 준비가 되었을 때만 끝나는 루프입니다. iOS앱도 계속해서 이벤트를 받아야 하므로 무한루프형식으로 앱이 실행되고 있습니다. 특정이벤트를 받아야 종료됩니다.
var counter = 0
while true {
print(counter)
counter += 1
if counter == 273 {
break
}
}