Menu
Coddy logo textTech

Nil 병합 연산자

Coddy Swift 여정의 기초 섹션에 포함된 레슨 — 86개 중 14번째.

때로는 여러 줄의 코드를 작성하지 않고도 옵셔널이 nil일 때 기본값을 제공하고 싶을 때가 있습니다. Swift의 nil 병합 연산자(??)가 바로 그 역할을 합니다. 이 연산자는 옵셔널에 값이 있으면 그 값을 추출하고, nil이면 기본값을 반환합니다.

let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // Guest

nicknamenil이므로, 연산자는 대신 "Guest"를 반환합니다. 만약 nickname에 값이 있었다면, 그 값이 사용되었을 것입니다.

let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoder

nil 병합 연산자는 기본값이 필요한 한 줄짜리 코드에 완벽합니다. 단순히 nil을 기본값으로 대체하고 싶을 때 if let 구문을 작성하는 것보다 더 깔끔합니다. 결과는 항상 옵셔널이 아닌 값이므로, 추가적인 언래핑 없이 직접 사용할 수 있습니다.

challenge icon

챌린지

쉬움

옵셔널 usernamedefaultName을 인자로 받아, nil 병합 연산자(nil coalescing operator)를 사용하여 적절한 표시 이름을 반환하는 getDisplayName 함수를 작성하세요.

만약 username이 비어 있다면(빈 문자열 ""로 표현됨), 이를 nil로 간주하고 기본 이름을 반환하세요. 그렇지 않으면 username을 반환하세요.

매개변수:

  • username (String): 사용자의 이름 (빈 문자열은 nil을 나타냄)
  • defaultName (String): 사용할 대체 이름

반환값: 비어 있지 않다면 username을, 그렇지 않으면 defaultName을 반환합니다.

힌트: 함수 내부에서 username을 옵셔널로 변환하세요. 만약 비어 있다면 nil로 만드세요. 그런 다음 ??를 사용하여 대체 값을 제공하세요.

치트 시트

nil 병합 연산자(??)는 옵셔널에 값이 있으면 이를 언래핑하고, nil인 경우 기본값을 반환합니다:

let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // Guest

옵셔널에 값이 있으면 그 값이 대신 사용됩니다:

let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoder

결과는 항상 옵셔널이 아닌 값이며, 단순한 대체 시나리오에서 if let보다 더 깔끔하게 사용할 수 있습니다.

직접 해보기

func getDisplayName(username: String, defaultName: String) -> String {
    // 여기에 코드를 작성하세요
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨