제어문 (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
}
'iOS' 카테고리의 다른 글
[iOS] Coordinator Pattern (0) | 2021.07.07 |
---|---|
[iOS] [Swift] Arrays (0) | 2021.07.05 |
[iOS] [Swift] The Swift Language Guide - 3. 콜렉션 타입 (Collection Types) (0) | 2021.06.22 |
[iOS] [Swift] The Swift Language Guide - 2. 문자열과 문자(String and Characters) (0) | 2021.06.22 |
[iOS] [Swift] The Swift Language Guide - 1. 기본 연산자 (Basic Operators) (0) | 2021.06.22 |