[swift] 옵셔널 체이닝과 nil 병합 연산자 함께 사용하기

옵셔널 체이닝과 nil 병합 연산자는 Swift 프로그래밍 언어에서 옵셔널 값 처리를 더욱 편리하게 해주는 기능입니다. 이 두 기능을 함께 사용하면 옵셔널 값이 nil일 경우에도 안전하게 접근할 수 있습니다.

옵셔널 체이닝

옵셔널 체이닝은 옵셔널 값이 nil인 경우에도 접근을 시도할 수 있는 문법입니다. 만약 옵셔널 값이 nil이라면 접근한 결과도 nil이 반환됩니다. 옵셔널 체이닝은 옵셔널 값이 여러 개의 프로퍼티나 메서드를 가지는 경우 유용하게 사용됩니다.

다음은 옵셔널 체이닝을 사용하는 예시입니다.

class Person {
    var name: String?
    var age: Int?
    
    func introduce() {
        if let name = name, let age = age {
            print("제 이름은 \(name)이고, \(age)살입니다.")
        } else {
            print("이름과 나이 정보가 없습니다.")
        }
    }
}

var person: Person? = Person()
person?.name = "John"
person?.age = 30

person?.introduce() // 제 이름은 John이고, 30살입니다.

위 예제에서 person.introduce()를 호출하면, person이 nil이 아닌 경우에만 if let 구문이 실행되어 이름과 나이가 함께 출력됩니다. 만약 person이 nil이라면 else 구문이 실행되어 “이름과 나이 정보가 없습니다.”라는 메시지가 출력됩니다.

nil 병합 연산자

nil 병합 연산자는 옵셔널 값이 nil인 경우 기본값을 사용할 수 있도록 해줍니다. 만약 옵셔널 값이 nil이라면, 병합 연산자 오른쪽에 있는 값을 반환합니다.

다음은 nil 병합 연산자를 사용하는 예시입니다.

var name: String? = nil
var defaultName = "Unknown"

var displayName = name ?? defaultName

print("이름: \(displayName)") // 이름: Unknown

위 예제에서 name 변수는 nil이지만, nil 병합 연산자를 사용하여 defaultName의 기본값인 “Unknown”을 displayName에 할당했습니다. 따라서 displayName 변수에는 “Unknown”이 저장되어서 출력됩니다.

옵셔널 체이닝과 nil 병합 연산자 함께 사용하기

옵셔널 체이닝과 nil 병합 연산자를 함께 사용하면 옵셔널 값이 nil일 경우에도 안전하게 접근하고 기본값을 사용할 수 있습니다. 옵셔널 체이닝을 사용하여 person 객체의 name 프로퍼티에 접근하고, nil 병합 연산자를 사용하여 기본값인 “Unknown”을 설정하는 방법은 다음과 같습니다.

var person: Person? = Person()
person?.name = "John"
person?.age = 30

var name = person?.name ?? "Unknown"

print("이름: \(name)") // 이름: John

위 예제에서 person?.name을 통해 person이 nil인 경우에도 person에 접근하고, name 프로퍼티를 가져옵니다. 만약 name이 nil이라면 nil 병합 연산자를 통해 기본값 “Unknown”이 할당되어 출력됩니다.

결론

옵셔널 체이닝과 nil 병합 연산자는 Swift에서 옵셔널 값 처리를 더욱 효율적이고 안전하게 해주는 기능입니다. 옵셔널 체이닝을 통해 옵셔널 값이 nil일 경우에도 접근할 수 있고, nil 병합 연산자를 사용하여 기본값을 설정할 수 있습니다. 이 두 가지 기능을 함께 사용하면 옵셔널 값 처리를 훨씬 더 편리하게 할 수 있습니다.

References