[iOS / Swift] Swift 문법을 알아보자! - 12편 : nil 병합 연산자 (nil coalescing operator)

프린스송·2021년 6월 26일
2

Swift 문법

목록 보기
12/21
post-thumbnail

안녕하세요! 이제 밖에 날씨가 엄청 더워졌네요~ 그래도 코딩 공부는 열심히 해야겠습니다. 오늘은 옵셔널을 언래핑하는 방법인 nil 병합 연산자에 대해서 알아보겠습니다. 앞서 공부했던 강제 언래핑, 옵셔널 바인딩, 옵셔널 체이닝이 있었고 이번엔 마지막 언래핑 방법이네요. 그럼 더 자세히 알아보겠습니다.


nil 병합 연산자

nil 병합 연산자은 영어로 nil coalescing operator입니다. coalescing을 한국어로 해석해보자면 "하나로 합치다" 라는 뜻이됩니다. 즉 nil 병합 연산자는 nil을 하나로 만든다는 느낌으로 생각하면 될것 같습니다.

Force unwrapping : !를 써서 강제로 옵셔널 추출
Optional Binding : if let, guard let을 써서 옵셔널 추출
Optional Chaining : 체인의 형태처럼 연쇄적으로 옵셔널에 접근
nil coalescing operator : ??을 써서 아주 간단히 언래핑

nil 병합 연산자의 장점은 '??'를 사용하여 표기하여 한줄로 언래핑을 아주 쉽게 수행할 수 있습니다. 옵셔널 바인딩이나 옵셔널 체이닝의 경우 if let이나 guard let을 써야해서 코드가 길어질 수 있지만 nil 병합 연산자는 한줄로 쓸 수 있다는 장점이 있죠! 그럼 간단한 코드를 통해 알아보겠습니다.

let a : Int? = 10
var b : Int

if let a = a {
    b = a
    print(b)
}

위의 코드와 같이 옵셔널 타입 a와 Int형 b 변수를 선언하고 옵셔널 바인딩을 통해 옵셔널을 추출하여 만약 a가 nil이 아니라면 b에 a를 넣는 코드를 만들었습니다. a를 선언할때 10이라는 초기값을 주었고 nil값은 들어가지 않았으므로 b에 10이 들어가 출력이 될 것입니다.

위의 코드를 nil 병합 연산자를 이용해서 짜보겠습니다.

let a : Int? = 10
var b : Int

b = a ?? 0

print(b)

위 와 동일한 코드입니다. 똑같이 옵셔널 상수와 일반 변수를 선언하였습니다. 하지만
"b = a ?? 0"의 코드를 사용하여 한줄로 표현을 했습니다. 코드를 알아보면 a에 값이 있을 경우 a를 b에 넣고 만약 nil이라 없을 경우 0을 넣는다는 뜻입니다. 위 코드에서는 a에 10이 들어가 있으므로 b에는 10이 들어갈 것입니다.

그리고 여기서 중요하게 보아야 할 부분은 b에 10이 들어간 것은 확인을 했지만 a자체가 들어간 것이 아닌 것을 확인할 수 있습니다. a는 옵셔널 타입이므로 a는 Optioanl(10)이 들어가 있습니다. 하지만 nil 병합 연산자를 사용하여 b에 a값을 넣었을때는 10이 나왔습니다. 옵셔널을 언래핑하여 대입을 해준다는 사실을 알 수 있죠!!

nil 병합 연산자
옵셔널 변수 ?? nil일 경우 행동

  • 옵셔널 값이 nil이 아니라면, 해당 옵셔널 값을 일반 값으로 가공시켜줍니다!(언래핑)
    따라서 사용하기가 매우 편리하고, 안전성도 보장됩니다.

오늘은 nil 병합 연산자에 대해서 알아보았습니다. 앞서 배웠던 옵셔널 바인딩이나 옵셔널 체이닝보다 훨씬 짧고 간단하게 사용할 수 있어서 매우 많이 사용할 것이라고 생각이 됩니다. 그럼 오늘 하루도 수고 많으셨습니다!

profile
[iOS / Swift] [React Native]

0개의 댓글