Swift

❓Nil Coalescing (??)

_yunie 2024. 7. 3. 21:02

안녕하세요!

오늘로 벌써 옵셔널에 관한 글이 다섯 번째인가요?

그래도 오늘 개념은 정말 별 거 없으니까 걱정 마세요!

그럼 갑시다

 

 

❓Nil Coalescing (??)

개발공부를 하거나 Swift문법 공부를 하시면서 ?? 라는 연산자를 보신 적 있으실까요?

저 ?? 가 오늘 공부하고자 하는 Nil Coalescing Operator입니다!

 

지금까지 알아본 옵셔널을 해제해 주는 방법 중 안전한 방법들은 guard let, if let 구문이 있었죠

그리고 Nil Coalescing 또한 안전하게 옵셔널을 해제해주는 방법인데, 보다 더 간편합니다!

 

우선 옵셔널 타입의 nickname이라는 변수를 선언해 볼게요

var optionalNickname: String? = "Yunie"

 

이제 저는 여기서 nickname 내 값의 유무에 따라 다른 값을 출력해주고 싶습니다

 

값이 있다면 사용자가 입력한 닉네임을 (= Yunie),

값이 없다면 "사용자"라는 값을 출력해주고 싶어요

 

그럼 우리가 아는 Optional Binding으로 옵셔널을 해제해 줘야겠죠?

if-let으로 해제해 주고자 하면 이렇게 해주면 됩니다

if let nickname = optionalNickname {
    print(nickname)
} else {
    print("사용자")
}

 

그런데 지금처럼 별다른 연산 없이 nil일 때, 기본적으로 가지게 되는 default 값을 지정해 주는 용도로만 Optional Binding을 사용해 준다고 하면 매 과정마다 조금 번거롭다는 생각이 들 것 같습니다 

그래서 이 과정을 좀 더 축약할 수 없나..?라는 생각이 들 수 있을 것 같아요

 

Nil Coalescing(??)이 이 문제를 해결해 줄 수 있습니다!

바로 이렇게요!

let nickname = optionalNickname ?? "사용자"

 

이 코드가 동작하는 방식은 생긴 것만큼 간단합니다

 

1. optionalNickname에 값이 있는지 확인

2. 값이 있다면 해당 값을 nickname이라는 상수에 대입

3. 만약 값이 없다면 ?? "사용자"라는 값을 nickname에 대입

 

이처럼 Nil Coalescing은 옵셔널 타입의 데이터가 nil일 때의 기본값을 지정해주고 싶을 때 유용하게 쓰입니다


optionalNickname이 nil인 경우, 아닌 경우를 나누어 실제 결과로 보여드리자면 아래와 같습니다  

확실히 이해가 되시죠? 😉

 

 

✏️ 오늘의 요약

  • Nil Coalescing Operation
    • ??
    • 옵셔널 타입의 데이터에 값이 없을 경우(nil), 기본값을 지정해 줄 때 유용 

 

 

마무리

오늘은 if-let / guard구문 없이도 쉽게 옵셔널을 해제하고 기본값을 대입해 주는 Nil Coalescing Operation에 대해 알아봤습니다!

사실 엄청 간단한 개념이지만 정말 옵셔널이란 개념에 대해 긴가민가할 때 저는 무작정 ?? 의 동작방식을 외우려고 했었어요😅

그만큼 아무것도 모르는 사람한테는 생소하게 다가올 것 같아서 한 번 정리해 봤습니다!

 

다음 글에서는 옵셔널 체이닝에 대해 얘기해 볼게요!

 

 

 

 

 

'Swift' 카테고리의 다른 글

❓ Switch-Case  (0) 2024.07.08
❓ Optional Chaining  (0) 2024.07.05
❓ Implicitly Unwrapped Optional  (1) 2024.07.01
❓ Optional Binding  (0) 2024.06.28
❓ Forced Unwrapping  (0) 2024.06.26