[Swift] 8. 옵셔널
옵셔널
@frozen
enum Optional<Wrapped> where Wrapped : ~Copyable, Wrapped : ~Escapable
- 래핑된 값 또는 값이 없는 경우를 나타내는 타입입니다.
옵셔널 구현
enum Optional<Wrapped> {
case some<Wrapped> // 연관값
case none // 값이 없음, none는 nil과 완전 동일
}
옵셔널은 두 가지 경우를 가진 열거형이다
let number: Int? = Optional.some(42)
let noNumber: Int? = Optional.none
print(noNumber == nil)
// Prints "true"
옵셔널 값 추출 4가지
// 1) 강제 추출
num!
// 2) nil이 아닌지 확인후 강제추출
if num != nil { print(num!) }
// 3) 바인딩(상수나 변수에 대입)이 되는 경우만 특정 작업을 진행
if let name = optionalName {
print(name)
}
// 4) Nil-Coalescing: 옵셔널 표션식 뒤에 기본값을 제시해서 옵셔널 가능성을 없앤다.
optionalName ?? "인덱스"
접근연산자 사용법
// 옵셔널 체이닝
// - 표현식이 옵셔널의 가능성이 있다는 것을 표현, 체이닝 결과는 항상 옵셔널
human?.choco?.name // 언래핑 필수
Reference
- https://developer.apple.com/documentation/swift/optional