[Swift] - Optional Binding(nil-coalescing)

longlivedrgn·2023년 1월 3일
0

swift문법

목록 보기
24/36
post-thumbnail

Nil-Coalescing Operator

→ Optional Type 표현식에 값이 저장되어 있는 지 확인하고 꺼낼 필요가 없어진다.

a ?? b 일 때, a는 옵셔널 값이고, 옵셔널에서 값을 추출하여 값이 있으면 a 옵셔널의 값을 반환하고, 값이 없으면 b 값을 반환한다.

  • 예를 통해서 알아보자. 아래와 같이 옵셔널 스트링을 선언해보자.
let name: String? = "Miro"
  • 옵셔널 바인딩을 통해서 print를 해보자.
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?"))

즉,

  • name에 값이 있을 경우 ⇒ name의 Unwrapping 된 값을 Return한다.
  • name에 값이 없을 경우(nil) ⇒ 오른쪽 피연산자 값을 Return 한다.

‼️ 단, ??를 사이로 같은 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

0개의 댓글