🔥 nil 병합 연산자

330자
4분

Swift에서는 옵셔널 타입을 사용하여 값이 있을 수도 있고 없을 수도 있는 상황을 표현한답니다. 이때 옵셔널 값을 다룰 때 유용하게 사용할 수 있는 연산자가 바로 Nil 병합 연산자(nil-coalescing operator ??)입니다. 이 연산자를 활용하면 옵셔널 값을 간결하고 안전하게 처리할 수 있어요.

nil-coalescing operatora ?? b와 같은 형태로 사용하며, 옵셔널 a가 값을 가지고 있으면 그 값을 반환하고, anil이면 기본값 b를 반환합니다. 여기서 a는 항상 옵셔널 타입이어야 하며, ba 내부에 저장된 타입과 일치해야 해요.

사실 nil 병합 연산자는 아래와 같은 코드를 간략하게 표현한 것이랍니다:

a != nil ? a! : b
swift

위 코드는 삼항 조건 연산자와 강제 언래핑(a!)을 사용하여 anil이 아닐 때는 a에 래핑된 값에 접근하고, 그렇지 않을 때는 b를 반환하는 것이죠. nil 병합 연산자는 이러한 조건부 검사와 언래핑을 간결하고 읽기 쉬운 형태로 제공합니다.

아래 예제를 통해 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"
swift

위 예제에서 userDefinedColorName 변수는 옵셔널 String으로 정의되었고, 기본값은 nil입니다. userDefinedColorName이 옵셔널 타입이기 때문에 nil 병합 연산자를 사용하여 그 값을 다룰 수 있어요.

colorNameToUse 변수의 초기값을 결정할 때 userDefinedColorName ?? defaultColorName 표현식이 사용되었는데요. userDefinedColorNamenil이므로 이 표현식은 defaultColorName의 값인 "red"를 반환하게 됩니다.

만약 userDefinedColorNamenil이 아닌 값을 할당하고 다시 nil 병합 연산자 검사를 수행하면, userDefinedColorName 내부에 래핑된 값이 기본값 대신 사용된답니다.

userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName isn't nil, so colorNameToUse is set to "green"
swift

이렇게 nil 병합 연산자를 활용하면 옵셔널 값을 다룰 때 간결하고 안전한 코드를 작성할 수 있습니다. 옵셔널 값이 nil일 때 기본값을 제공함으로써 런타임 오류를 방지하고, 코드의 가독성도 높일 수 있어요.

실제로 개발을 하다 보면 사용자 입력값이나 외부 데이터를 다룰 때 종종 옵셔널 값을 마주하게 됩니다. 이때 nil 병합 연산자를 적절히 활용한다면 훨씬 더 안정적이고 효율적인 코드를 작성할 수 있겠죠?

지금까지 nil 병합 연산자에 대해 알아보았습니다. 옵셔널 값을 다룰 때 이 연산자를 잘 활용한다면 Swift 코드를 더욱 간결하고 우아하게 작성할 수 있을 거예요.