Swift는 다양한 제어 흐름 (control flow) 구문을 제공합니다. 이것은 여러번 작업을 수행하는 while 루프를 포함하고 조건에 따라 다르게 실행되는 if, guard, switch 구문과 코드에서 다른 포인트로 실행 플로우를 전달하는 breakcontinue 를 포함합니다.

Swift는 또한 배열, 딕셔너리, 범위, 문자열, 그리고 다른 연속적인 것에 대한 반복을 쉽게 만들어 주는 for-in 루프를 제공합니다.

Swift의 switch 구문은 C와 유사한 언어의 해당 구문보다 훨씬 더 강력합니다. 케이스들은 간격 매치, 튜플, 그리고 특정 타입으로의 캐스트를 포함하여 다른 많은 패턴을 비교할 수 있습니다. switch 케이스에서 매치된 값은 케이스 문 안에서 사용할 수 있는 임시의 상수 또는 변수로 사용이 가능하고 복잡한 매칭 조건은 각 케이스에 대해 where 절로 표현될 수 있습니다


For-In 문 (for in Loops)

for-in 문은 배열의 아이템, 범위의 숫자 또는 문자열을 순서대로 순회하기 위해 사용한다.

let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
    print("Hello, \\(name)!")
}
// Hello, Anna!
// Hello, Alex!
// Hello, Brian!
// Hello, Jack!

dictionary에서 반환된 Key:Value 키 값 쌍으로 구성된 튜플을 순회하며 제어할 수 있습니다.

→ 순서대로 출력되는지 ..답은 ❌, 값을 찍을때마다 달라진다.

let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
    print("\\(animalName)s have \\(legCount) legs")
}
// ants have 6 legs
// spiders have 8 legs
// cats have 4 legs

dictionary에 담긴 콘텐츠는 정렬이 되지 않은 상태입니다. 사전에 넣었던 순서대로 순회되지 않습니다. 아래와 같이 숫자 범위를 지정해 순회할 수 있습니다.

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

for-in 문을 순서대로 제어할 필요가 없다면, 변수자리에 _ 키워드를 사용하면 성능을 높일 수 있습니다.

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"