본문 바로가기

iOS

[iOS] [Swift] The Swift Programming Guide - 4.제어문 (Control Flow)

제어문 (Control Flow)

 

Swift 에서는 while, if guard, switch, for-in 등 많은 제어문을 제공합니다.



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

 

stride(from:to:by:) 함수를 이용하여 구간을 설정한 반복 또한 가능합니다.

let minutes = 60
let minuteInterval = 5
for tickMark in stride(from:0, to: minutes, by: minuteInterval) {
    // 5를 주기로 반복이 실행됩니다.
    // 0, 5, 10, 15 ... 45, 50, 55
}

 

While 문 (While loops)

Swift 에서는 while 문과 repeat-while 두 가지 종류의 while 문을 제공합니다.

while 문은 여느 프로그래밍 언어 문법에서 사용되는 while문과 동일하게 조건이 거짓일때까지 구문을 반복합니다.

while condition {
    statements
}

Repeat - While 문은 다른 언어의 do-while 문과 유사한 while문 입니다.

구문을 최소 한 번 이상 실행하고 while 문의 조건이 거짓일 때 까지 반복합니다.

repeat {
    statements
} while condition



Switch


Switch문의 기본 형태는 다음과 같습니다.

switch some value to consider {
    case value 1:
        respond to value 1
    case value 2:
         value 3:
         respond to value 2 or 3
    default:
        otherwise, do something else
}

 

위와 같은 로직으로 수행되는 제어문이며 예시로 문자를 비교해 처리하는 경우 아래와 같이 처리할 수 있습니다.

let someCharacter: Character = "z"
switch someCharacter {
    case "a":
        print("a")
    case "z":
        print("z")
    default:
        print("otherwise")
}
// output: z

case 안에는 최소 하나의 실행 구문이 존재해야 하며 case, 를 통해 복수 조건을 혼합하여 사용할 수 있습니다.

 

혹은 아래와 같이 튜플을 조건으로 사용할 수 있습니다.

let somePoint = (1, 1)

switch somePoint {
    case (0, 0):
        print("\(somePoint) is origin")
    case (_, 0):
        print("\(somePoint) is on the x-axis")
    case (0, _):
        print("\(somePoint) is on the y-axis")
    default:
        print("\(somePoint) is outside of the box")
}

 

이용가능한 API 버전 확인 (Checking API Availability)


Swift 에서는 기본으적으로 특정 플랫폼(iOS, macOS, tvOS, watchOS)과 특정 버전을 확인하는 구문을 제공합니다.

이 구문을 활용하면 특정 플랫폼과 버전을 사용하는 기기에 대한 분기 처리를 할 수 있으며 기본적인 구문 형태는 아래왁 같습니다.

 

if #available(platform name version, ..., *) {
    // statements to execute if the APIs are available
} else {
    // fallback statements to execute if the APIs are unavailable
}

실제 사용 예시는 아래와 같습니다.

if #available(iOS 13, macOS 10.12, *) {
    // use iOS 13 APIs on iOS, and use macOS 10.12 APIs on macOS
} else {
    // fallback to eariler iOS and macOS APIs
}