일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 파일 시스템
- Swift
- struct
- Apple Developer Academy
- async
- @state
- 프로세스 스케줄링
- COLOR
- 비동기
- 데드락
- Codable
- 알고리즘
- 오브젝트
- 동시성
- 상호배제
- forEach
- Linked List
- UserDefaults
- SwiftUI
- IOS
- 앨런
- 인프런
- 동기화
- Algorithm
- 100 days of SwiftUI
- deadlock
- 운영체제
- core data
- decode
- 가상 메모리
Archives
- Today
- Total
기어가더라도 제대로
[5일차] 조건문 패밀리(if, switch ...) 본문
조건을 걸고 그 조건을 만족하는지 확인해야하는 경우가 많습니다.
보통 이런식으로 쓰게됩니다.
if someCondition {
print("Do something")
}
- if 키워드를 사용하면 Swift 에게 조건을 판단해달라고 신호를 보냅니다.
- someCondition이 참인지 거짓인지 확인합니다.
- 참이라면 { } 안에 명령을 실행합니다.
{ } 는 culry brackets 라고 하는데 열고 닫습니다. 그 안에를 블록이라 표현합니다.
someCondition 안에서 비교 연산을 해도 되고 그렇습니다. <, >, <=, >=, ==, != 등등이요. 혹은 Bool 타입이면 !만 써도 되겠네요.
if 를 여러개 쓰는 방법은
if someCondition {
//
} else if otherCondition {
//
} else {
//
}
이런식으로 사용할 수 있겠습니다. 또한 두 조건을 동시에 만족하고, 혹은 하거나 를 하고 싶다면 어떻게 할까요?
if someCondition && otherCondition {
}
if someCondition || otherCondition {
}
위의 조건문은 두 조건이 모두 참이여야 하고, 아래 조건은 둘 중 하나라도 참이면 되는 경우입니다.
데이터들을 어떻게 비교될까?
Swift 는 다양한 데이터 타입을 지원하고 이들을 같은지 다른지 혹은 비교하는 방법을 마련해 보았습니다.
let firstName = "Paul"
let secondName = "Sophie"
let firstAge = 40
let secondAge = 10
print(firstName == secondName)
print(firstName != secondName)
print(firstName < secondName)
print(firstName >= secondName)
print(firstAge == secondAge)
print(firstAge != secondAge)
print(firstAge < secondAge)
print(firstAge >= secondAge)
뭐 글자 크기 비교는 규칙은 모르겠지만, 알파벳이 먼저 오느냐 순서로 대소 구분을 하나봅니다.
비슷하게 Date 타입에서도 대소 구분이 가능합니다.
enum 에서도 가능한데 이것은 어떻게 해줄까요?
enum Sizes: Comparable {
case small
case medium
case large
}
let first = Sizes.small
let second = Sizes.large
print(first < second)
enum 타입 안에서 먼저오는 case 의 경우에 더 작다고 표시를 합니다. (case 가 small 이여서 그런게 아닙니다.)
언제 If 보다 Switch 를 사용해야 할 까요?
명확한 기준은 없지만 아래 3개의 조건에 해당하면 if 보단 Switch 를 사용하는 것이 좋습니다.
- switch 문 같은 경우는 enum 의 모든 케이스를 확인하는 것 처럼 완벽해야합니다.
- if, 나 if else 는 넣어도 그만 안넣어도 그만이기 때문에 놓치는 경우가 있을 수 있습니다.
- 호출 횟수에 차이가 있습니다.
- if 가 함수내에 3번 호출이 되고 그 함수가 3번 호출된다면 ?
- 모든 if 를 확인해보니까 총 9번이 확인하는 비용이 듭니다.
- switch 에서 case가 3개 있고 그 함수가 3번 호출된다면?
- case가 해당되는 것이 있는가 없는가 만 확인하니까 총 3번이 확인하는 비용이 듭니다.
- if 가 함수내에 3번 호출이 되고 그 함수가 3번 호출된다면 ?
- Switch 문은 if 문으로 다루기 힘든 고급 패턴 매칭을 제공합니다.
- pattern matching 은 쉽게 말하면 A data 가 B 타입으로 변환할 수 있는지를 확인 하는 것입니다.
- 더 궁금하면 검색해보세요 ~
fallthrough 키워드는 다루지 않았는데, 다른 언어에서는 중요하게 쓰일지 몰라도 swift 에서는 중요성이 많이 떨어집니다. 몰라도 됩니다.
3항 조건 연산자는 언제 쓸까요?
if, else 를 한줄에 쓰는 것과 같은 효과를 냅니다.
'Swift - 기초' 카테고리의 다른 글
[8일차] 클로저 (0) | 2022.09.28 |
---|---|
[6일차] Loops (0) | 2022.09.28 |
[4일차] Type annotation (0) | 2022.09.28 |
[3일차] 100일의 SwiftUI - 배열, 셋, 딕셔너리, Enum (0) | 2022.09.28 |
[2일차] 100일의 SwiftUI - Boolean, String Interpolation, (0) | 2022.09.27 |
Comments