엘비스 연산자 - swkim0128/PARA GitHub Wiki

**엘비스 연산자(?:)**는 Nullable 타입의 값이 null일 경우 기본값을 제공하는 연산자입니다. 이를 통해 null로 인한 오류를 방지하고, 보다 안전하게 코드를 작성할 수 있습니다.

1. 엘비스 연산자의 기본 문법

val result = nullableValue ?: defaultValue
  • nullableValue: null일 수 있는 값
  • defaultValue: nullableValue가 null이면 대신 반환할 기본값

2. 엘비스 연산자 사용 예제

(1) 기본적인 사용

fun main() {
    val name: String? = null
    val result = name ?: "Unknown"
    println(result) // 출력: Unknown
}
  • name이 null이므로 "Unknown"이 반환됨.

(2) Nullable 타입의 기본값 설정

fun main() {
    val input: Int? = null
    val number = input ?: 0
    println(number) // 출력: 0
}
  • input이 null이므로 기본값 0을 반환.

(3) 안전 호출 연산자 (?.)와 함께 사용

fun main() {
    val name: String? = null
    val length = name?.length ?: -1
    println(length) // 출력: -1
}
  • name?.length가 null이면 -1을 반환.

(4) 함수 반환 값이 null일 때 기본값 제공

fun getUserName(): String? {
    return null // 예제에서는 null을 반환
}

fun main() {
    val userName = getUserName() ?: "Guest"
    println(userName) // 출력: Guest
}
  • getUserName()이 null을 반환하면 "Guest"를 대신 사용.

(5) 리스트에서 null 요소 처리

fun main() {
    val names = listOf("Alice", null, "Bob")
    
    for (name in names) {
        val displayName = name ?: "No Name"
        println(displayName)
    }
}

출력:

Alice
No Name
Bob
  • null 값이 "No Name"으로 대체됨.

3. 엘비스 연산자와 return 활용

엘비스 연산자는 return과 함께 사용하여 null이면 함수 실행을 종료할 수도 있습니다.

(1) 함수에서 return 처리

fun printLength(text: String?) {
    val length = text ?: return // text가 null이면 함수 종료
    println("문자열 길이: $length")
}

fun main() {
    printLength(null) // 출력 없음
    printLength("Hello") // 출력: 문자열 길이: Hello
}
  • text가 null이면 함수가 즉시 종료됨.

(2) throw와 함께 사용

fun getName(name: String?): String {
    return name ?: throw IllegalArgumentException("이름이 필요합니다!")
}

fun main() {
    println(getName("Alice")) // 출력: Alice
    println(getName(null)) // 예외 발생: IllegalArgumentException
}
  • name이 null이면 예외 발생.

4. 엘비스 연산자의 장점

Null 안전성 제공

코드 가독성 향상

기본값을 간결하게 설정 가능

안전한 함수 종료 (return과 함께 사용)

5. 엘비스 연산자와 !! 연산자 비교

연산자 설명 사용 예제
?: null이면 기본값 반환 val name = nullableName ?: "Unknown"
!! 강제 호출 (NPE 발생 가능) val length = nullableName!!.length

(1) !! 사용 시 예제 (주의 필요)

fun main() {
    val name: String? = null
    println(name!!.length) // NullPointerException 발생
}
  • !!는 null이 올 수 있는 상황에서 사용하면 앱이 충돌할 위험이 있음.

✅ **?:(엘비스 연산자)**를 사용하면 더 안전하게 null을 처리할 수 있습니다!

6. 요약

연산자 설명
?. null이면 연산을 중단하고 null 반환
?: null이면 기본값 반환
!! null이어도 강제 호출 (예외 발생 가능)

🔹 엘비스 연산자 (?:)를 사용하면 null을 안전하게 처리하고, 기본값을 제공하여 코드의 안정성을 높일 수 있습니다! 🚀ㅑ

⚠️ **GitHub.com Fallback** ⚠️