for-in루프는 배열의 아이템들, 특정 범위의 숫자들, 문자열의 문자등을 순회하기위해 사용한다.
아래의 예시는 for-in 루프를 사용해 배열을 순회하는 예시이다.
let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
print("Hello, \(name)!")
}
// Hello, Anna!
// Hello, Alex!
// Hello, Brian!
// Hello, Jack!
또한 Dictopnary의 key, value쌍에 접근하기 위해 순회할 수도 있다. Dictionary에 있는 각각의 아이템들은 순회시 (key, value) 튜플을 반환한다. 순회시 튜플의 key, value 값에 특정한 이름을 가진 상수를 선언할 수 있다.
아래의 예시는 Dictonary에서 for-in 루프를 사용하는 예시이다.
let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
// animalName이라는 상수에 key 값이, legCount라는 상수에 value값이 들어간다.
print("\(animalName)s have \(legCount) legs")
}
// cats have 4 legs
// ants have 6 legs
// spiders have 8 legs
이전의 Dictonary에서 살펴봤듯이, Dictionary는 순서를 보장하지 않는다.
특정한 범위의 수에서도 for-in 루프를 사용할 수 있다. 아래의 예시는 1에서 5까지 순회하는 예시이다.
for index in 1...5 {
print("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25
위의 예시에서, index는 각각의 루프가 시작될 때 새로운 값으로 초기화되는 상수이다.
만약 각각의 루프에서 해당하는 값을 사용할 필요가 없다면, 아래의 예시처럼 변수명에 _ (언더스코어) 를 사용하여 해당 값을 무시할 수 있다.
let base = 3
let power = 10
var answer = 1
for _ in 1...power {
answer *= base
}
print("\(base) to the power of \(power) is \(answer)")
// Prints "3 to the power of 10 is 59049"
for-in 루프에서 사용할 때 ... 연산자 대신 ..< 같은 범위 연산자 또한 사용할 수 있다.
let minutes = 60
for tickMark in 0..<minutes {
// tickMark 에는 0에서 59까지가 할당된다.
}
while loop는 특정조건이 false가 될 때까지 순회한다. swift는 두 가지 종류의 while loop를 제공한다.
루프의 시작에서 해당 조건을 체크하는 while loop와 루프의 끝에서 해당 조건을 체크하는 loop이다.
while loop는 하나의 조건이 true인지 false인지를 체크하고, 조건이 false가 될 때까지 반복한다.
기본적인 while loop의 형태는 다음과 같다.
while <#condition#> {
<#statements#>
}
condition이 false가 될 때까지 statements를 반복하여 실행한다.
repeat-while은 while가 다르게 먼저 statemets를 실행하고 그 후에 condition의 false 여부를 판단한다.
기본적인 repeat-while loop의 형태는 다음과 같다.
repeat {
<#statements#>
} while <#condition#>