Swift의 옵셔널에 대하여
Swift의 옵셔널에 대하여
변수에 값이 있을수도 있고 nil일수도 있는 타입
1
2
let name: String? = nil //값이 nil 일때
name = "sangjin" //값 할당 가능
강제 언래핑
- (
!
)로 옵셔널 타입 → 타입
1
2
let name : String? = nil
print(name) //nil이면 크래시 발생
옵셔널 바인딩
if let
사용해서nil
이 아닐때만 사용가능
1
2
3
4
5
6
let name: String? = nil
if let wrappedName = name { //nil인지 아닌지
print(wrappedName) //nil이 아닐때만 print동작
} else {
print("값이 없음")
}
- 널 병합 연산자
1
2
let username = name ?? "Unknown"
print(username) // "Alice" (값이 없으면 "Unknown" 반환)
옵셔널은 enum + 제네릭 타입
- 옵셔널이라는 enum에는
some
,none
이 있음some
: nil이 아닐때의 값none
: nil
some
의 값이 무엇인지도 명시해줘야 하기때문에 제네릭으로 이를 표시하는 것을 내부적으로 구현되어 있다.
1
2
3
4
enum Optional<Wrapped> {
case none
case some(Wrapped) //some의 associated Value == Wrapped
}
This post is licensed under CC BY 4.0 by the author.