→ Optional Type 표현식에 값이 저장되어 있는 지 확인하고 꺼낼 필요가 없어진다.
a ?? b 일 때, a는 옵셔널 값이고, 옵셔널에서 값을 추출하여 값이 있으면 a 옵셔널의 값을 반환하고, 값이 없으면 b 값을 반환한다.
let name: String? = "Miro"
if let name = name {
print("Hello, \(name)")
} else {
print("hello, what's your name")
}
// Hello, Miro
만약, nil-coalescing을 사용한다면? 아래와 같이 사용이 가능하다.
print("hello, "+ (name ?? "what's your name?"))
즉,
‼️ 단, ??를 사이로 같은 Type이여야한다.
Optional String Type ?? Non-Optional String Type → 가능
Optional String Type ?? Non-Optional Int Type → 불가능
추가적인 nil-coalescing operator의 예)
→ Dictionary에서 key값을 통해 value 값을 뽑아낼 때 optional binding을 해야되는데, 만약 nil이라면 0을 nil이 아니라면 해당 값을 뽑아낸다!
fruitStore.stock[fruit] ?? 0