본문 바로가기

Study/Kotlin

[Kotlin] 엘비스 연산자(Elvis Operation)

코틀린의 엘비스 연산자는 ?:로 나타내며, ?:의 왼쪽 값이 null이면 ?:의 오른쪽 값을 리턴한다.

 

예를 들어 어떤 문자열의 길이를 구하는 함수를 구현한다고 할 때, 길이를 구하고자 하는 문자열의 null 여부를 if - else로 확인할 수 있다.

 

fun calculateLength(str: String?): Int {
    val length: Int = if (str != null) str.length else -1
    return length
}

 

calculateLength 함수를 임의의 문자열에 적용해보면 다음과 같은 결과를 얻을 수 있다.

 

fun main(args: Array<String>) {
    
    val notNullString: String? = "Hello Kotlin!"
    val nullString: String? = null
    
    println(calculateLength(notNullString))		// 13
    println(calculateLength(nullString))		// -1
}

 

굳이 if - else 조건문으로 분기하여 처리하지 않고, 엘비스 연산자를 사용할 수도 있다.

엘비스 연산자는 연산자의 좌측에 해당하는 값이 null이 아니면 그 값을 그대로 리턴하고, null이면 연산자의 오른쪽에 해당하는 값을 리턴한다.

 

글자수를 구해주는 함수 calculateLength 함수를 아래와 같이 고쳐보자.

 

fun calculateLength(str: String?): Int {
    val length: Int = str?.length ?: -1
    return length
}

 

매개변수 strnull일 수도 있으므로 null safe 호출을 위해 ?를 붙여주었다. str?.lengthnull이 아니라면 str.length를 리턴하고, 그렇지 않은 경우 -1을 리턴한다.