nil 병합 연산자은 영어로 Nil-Coalescing Operator!!
nil 병합 연산자의 장점은 ?? 를 사용하여 표기하여 한 줄로 언래핑(Unwrapping)을 아주 쉽게 수행할 수 있음!!
nil 병합 연산자(a ?? b)는 옵셔널(Optional) a에 값이 있다면 이를 언래핑(Unwrapping)하고,
nil일 경우 디폴트 값인 b를 리턴!!!
a는 항상 옵셔널 타입(Optional Type) 임.
🚨 b는 a 안에 저장된 타입과 반드시 일치해야만 함!!!!
nil 병합 연산자는 🔽 아래와 같은 코드를 축약한 것임!!
a != nil ? a! : b
위의 코드는 삼항 연산자를 사용하여 a가 nil이 아닐 경우 a 안에 래핑 되어있는 값에 접근하기 위해 강제 언래핑 a! 을 하며,
그렇지 않을 경우 b를 리턴!!
nil 병합 연산자는 조건 확인과 언래핑(Unwrapping)을 더 간결하고 읽기 쉬운 형태로 포장하는 방법을 제공!! 🎁
예시를 보자!!
nil 병합 연산자를 사용하여 기본 색상 이름과 선택적 사용자 정의 색상 이름 중에서 선택하는데
let defaultColorName = "red"
var userDefinedColorName: String? // defaults to nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is nil, so colorNameToUse is set to the default of "red"
userDefinedColorName 변수는 옵셔널(Optional) 문자열로 정의되어 있으며, 디폴트 값은 nil !!
userDefinedColorName이 옵셔널 타입(Optional Type)이기 때문에 그 값을 판단하기 위해 nil 병합 연산자를 사용!!
위의 예시에서는 연산자가 colorNameToUse라는 문자열 변수의 초기값을 결정하기 위해 사용됨.
userDefinedColorName이 nil이기 때문에,
userDefinedColorName ?? defaultColorName은 defaultColorName의 값인 "red"를 반환.
만약!!!
userDefinedColorName에 nil이 아닌 값을 할당하고 nil 병합 연산자을 다시 수행한다면,
userDefinedColorName 안에 래핑 되어있는 값이 나옴!!
userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName isn't nil, so colorNameToUse is set to "green"
green으로 잘 나오는 모습!!!
참고 및 인용
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/basicoperators/
'Swift' 카테고리의 다른 글
| [Swift] replacingOccurrences(of:with:) (2) | 2024.05.12 |
|---|---|
| [Swift] 클로저(Closures) (3) | 2024.05.05 |
| [Swift] 옵셔널(Optional)[3] 옵셔널 체이닝(Optional Chaining), 암시적 언래핑 옵셔널(Implicitly Unwrapped Optionals) (1) | 2024.03.27 |
| [Swift] 옵셔널(Optional)[2] 강제 추출(Forced Unwrapping), 옵셔널 바인딩(Optional Binding) (2) | 2024.03.26 |
| [Swift] 옵셔널(Optional) [1] (0) | 2024.03.26 |