조건문에는 if와 switch가 있고, 반복문에는 for-in, while, repeat-while이 있다.
if 예시
let myAge = 20
if myAge > 0 && myAge < 20 {
print("미성년자입니다.")
} else if myAge >= 20 {
print("성인입니다.")
} else {
print("올바른 나이가 아닙니다.")
}
// "성인입니다." 출력
myAge가 0보다 크고 19인 경우 위의 if문을 통해 "성인입니다."를 출력할 수 있고 19와 같거나 큰 경우엔 "미성년자입니다."가 출력될 것이다. 만약 0이거나 음수인 경우라면 "올바른 나이가 아닙니다."를 출력한다.
switch 예시
let color = "회색"
switch color {
case "빨간색", "초록색", "파랑색":
print("빛의 삼원색입니다.")
case "검은색", "흰색":
print("흑백입니다.")
case let x where x.contains("색"):
print(color + "입니다.")
default:
print("기타")
}
// "회색입니다." 출력
switch문을 사용하면 다양한 값을 비교처리할 수 있다. 또한 case에 꼭 동일한 값이 아닌 여러가지 조건을 입력할 수 있다. 그 조건이 참일 경우 해당 case의 구문을 실행한다. 해당 case의 구문이 실행 완료되면 switch문에서 빠져나온다.
for-in 예시
var total = 0
for i in 0..<10 {
total += i
}
print(total)
// "44” 출력
total = 0
for i in 0...10 {
total += i
}
print(total)
// "55” 출력
0..<10은 0부터 10보다 작은 수 까지 반복한다. 0...10은 0부터 10까지 반복한다.
let colorDict = [
"빛의삼원색": ["빨간색", "초록색", "파랑색"],
"흑백": ["검은색", "흰색"],
"기타색": ["보라색"]
]
for (kind, colors) in colorDict {
for color in colors {
if color == "빨간색" {
print("\(color)은 \(kind)입니다.")
}
}
}
// "빨간색은 빛의삼원색입니다. 출력
딕셔너리는 for-in에서 각 딕셔너리의 키-값(kind-colors) 쌍을 반환한다. 이때 딕셔너리는 순서가 지정되지 않은 컬렉션이므로 무작위 값을 제공한다. 하지만 딕셔너리의 value인 colors는 배열이므로 for-in에서 순서대로 값을 반환하게 된다.
while 및 repeat-while 예시
var n = 2
while n < 100 {
n *= 2
}
print(n)
// "128" 출력
var m = 2
repeat {
m *= 2
} while m < 100
print(m)
// "128” 출력
while문은 condition을 먼저 확인 후 참인 경우에 구문을 실행하고 거짓이면 종료된다. repeat-while의 경우엔 repeat 구문을 먼저 실행한 후 while의 condition을 확인한다.
var n = 2
while n < 2 {
n *= 2 // 실행 안됨
}
print(n)
// "2" 출력
var m = 2
repeat {
m *= 2 // 먼저 실행됨
} while m < 2
print(m)
// "4” 출력
참고: Apple Inc. “The Swift Programming Language (Swift 5.3)”. Apple Books. https://books.apple.com/hk/book/the-swift-programming-language-swift-5-4/id881256329?l=en
'프로그래밍 > Swift' 카테고리의 다른 글
[swift] 함수와 클로저 (0) | 2021.06.07 |
---|---|
[Xcode 12] 인텔 맥북과 M1 맥북의 Architecture 차이점(x86_64와 Arm64) (0) | 2021.06.04 |
[Swift] 변수 선언 (0) | 2021.05.26 |
Swift가 안전한 언어인 이유? (0) | 2021.03.15 |
UIGraphicsBeginImageContext의 사용과 알파 채널의 관계 (0) | 2021.03.15 |