Post

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.