Swift의 Nil 병합 연산자(??) 설명

jeongmuyamette·2025년 3월 9일

TIL

목록 보기
59/72
post-thumbnail

Swift의 Nil 병합 연산자(??) 설명

제시된 코드는 Swift의 nil 병합 연산자(nil-coalescing operator)인 ??를 사용하는 예시입니다.

코드 분석

let optionalValue: String? = nil
print(optionalValue ?? "디폴트값이 들어가요!")

상세 설명

1. 변수 선언 부분

let optionalValue: String? = nil
  • optionalValueString? 타입(옵셔널 문자열)의 상수로 선언되었습니다.
  • 값으로 nil이 할당되었습니다. 즉, 이 옵셔널은 값을 가지고 있지 않습니다.

2. Nil 병합 연산자 사용 부분

print(optionalValue ?? "디폴트값이 들어가요!")
  • ?? 연산자는 좌측의 옵셔널 값이 nil인 경우 우측의 기본값을 사용하는 연산자입니다.
  • 여기서 optionalValuenil이므로, ?? 연산자의 우측에 있는 "디폴트값이 들어가요!"가 사용됩니다.
  • 따라서 콘솔에는 "디폴트값이 들어가요!"가 출력됩니다.

Nil 병합 연산자(??)의 작동 방식

Nil 병합 연산자는 다음과 같이 작동합니다:

a ?? b
  • 만약 anil이 아니라면, a의 값을 언래핑하여 반환합니다.
  • 만약 anil이라면, b의 값을 반환합니다.
  • 결과적으로 반환되는 값은 언래핑된 비옵셔널 값입니다.

다양한 예시

예시 1: 옵셔널에 값이 있는 경우

let name: String? = "변창원"
let greeting = "안녕하세요, " + (name ?? "손님") + "님!"
print(greeting)  // "안녕하세요, 변창원님!" 출력

예시 2: 옵셔널이 nil인 경우

let name: String? = nil
let greeting = "안녕하세요, " + (name ?? "손님") + "님!"
print(greeting)  // "안녕하세요, 손님님!" 출력

예시 3: 중첩된 nil 병합 연산자

let primaryName: String? = nil
let secondaryName: String? = nil
let tertiaryName: String? = "백업 이름"

let displayName = primaryName ?? secondaryName ?? tertiaryName ?? "이름 없음"
print(displayName)  // "백업 이름" 출력

예시 4: 다른 타입의 옵셔널과 함께 사용

let count: Int? = nil
let message = "항목 수: " + String(count ?? 0)
print(message)  // "항목 수: 0" 출력

비유로 이해하기

Nil 병합 연산자는 다음과 같이 비유할 수 있습니다:

  1. 음식 주문 비유:

    • 당신은 레스토랑에서 첫 번째 선택 메뉴를 주문했습니다(옵셔널 값).
    • 만약 첫 번째 선택 메뉴가 있다면(nil이 아님), 그것을 받습니다.
    • 만약 첫 번째 선택 메뉴가 품절되었다면(nil), 대체 메뉴(기본값)를 받습니다.
  2. 계획 비유:

    • 주말 여행을 계획하고 있습니다.
    • 첫 번째 계획은 야외 피크닉입니다(옵셔널 값).
    • 만약 날씨가 좋다면(nil이 아님), 피크닉을 갑니다.
    • 만약 비가 온다면(nil), 대신 실내 영화 관람(기본값)을 선택합니다.

실용적인 활용

Nil 병합 연산자는 다음과 같은 상황에서 특히 유용합니다:

  1. 사용자 설정 적용:

    let userPreferredColor = userSettings.backgroundColor ?? .white
  2. API 응답 처리:

    let username = response.user?.name ?? "익명 사용자"
  3. 폼 입력 검증:

    let email = emailTextField.text ?? ""
  4. 기본값 제공:

    let quantity = productQuantity[productId] ?? 0

Nil 병합 연산자는 옵셔널을 다룰 때 코드를 간결하게 만들어주는 강력한 도구입니다. if let과 같은 옵셔널 바인딩보다 더 간단하게 기본값을 제공할 수 있어, 특히 옵셔널 값에 기본값을 제공해야 하는 상황에서 매우 유용합니다.

0개의 댓글