[swift] 옵셔널 체이닝과 옵셔널 매핑의 차이점

옵셔널은 Swift 언어의 강력한 기능 중 하나이며, 코드에서 값이 없을 수 있는 변수 또는 상수를 처리하는 데 사용됩니다. 옵셔널을 다루는 방법으로 옵셔널 체이닝과 옵셔널 매핑이 있습니다. 이번 글에서는 옵셔널 체이닝과 옵셔널 매핑의 차이점에 대해 알아보겠습니다.

옵셔널 체이닝(Optional Chaining)

옵셔널 체이닝은 옵셔널의 값이 존재하는 경우에만 속성이나 메소드에 접근할 수 있도록 하는 방법입니다. 이를 통해 옵셔널이 nil일 때 발생하는 런타임 오류를 방지할 수 있습니다.

예를 들어, person 객체가 있고, 이 객체가 address 속성을 가지고 있고, address가 또 다시 city 속성을 가지고 있다고 할 때, 옵셔널 체이닝을 사용하여 person.address?.city와 같이 접근할 수 있습니다. 이때 addressnil이라면 nil을 반환하고, 값이 존재한다면 city에 접근하여 그 값을 반환합니다.

let city = person.address?.city

옵셔널 매핑(Optional Mapping)

옵셔널 매핑은 옵셔널 바인딩을 통해 옵셔널의 값이 존재하는 경우에만 특정 작업을 수행하는 것을 말합니다. 옵셔널이 nil이 아닐 때에만 원하는 동작을 수행하고자 할 때 사용됩니다.

예를 들어, 옵셔널 변수 name에 값이 있는 경우에만 해당 값을 출력하고자 할 때, 옵셔널 매핑을 사용하여 아래와 같이 작성할 수 있습니다.

if let unwrappedName = name {
    print(unwrappedName)
}

결론

옵셔널 체이닝과 옵셔널 매핑은 옵셔널을 다루는 데 유용한 두 가지 방법입니다. 옵셔널 체이닝은 옵셔널 값의 존재 여부에 따라 속성 및 메소드에 접근하는 것을 안전하게 처리할 수 있도록 해주고, 옵셔널 매핑은 옵셔널 값이 존재하는 경우에만 특정 작업을 수행할 수 있도록 해줍니다.

이러한 차이점을 이해하고 적절히 활용하면 옵셔널을 다루는 코드를 더욱 안전하고 간결하게 작성할 수 있습니다.

참고 자료: The Swift Programming Language - Optional Chaining, The Swift Programming Language - Optional Binding