Kotlin, nullable 변수의 null처리

Yebali·2021년 8월 16일
0

약간의_Kotlin

목록 보기
13/19

코틀린에서는 null을 허용하는 nullabl 변수가 별도로 존재한다.
이런 변수들을 일일히 if로 체크해서 로직을 하는건 아름답지 못할 수 있다.

다른 방법으로 null을 처리하는 방법을 알아보자.

Nullable 변수 처리

null을 처리하는 방법은 아래와 같이 몇가지가 있다

  • ?. (null safa operator)
  • ?: (elvis operator)
  • !!. (non-null assertion operator)

?. (null safa operater)

참조 연산자를 실행하기 전에 객체가 null인지 확인부터 하고,
객체가 null이라면 뒤따라 오는 연산을 실행하지 않는 연산자

fun main() {        
    var a: String? = null
    
    println(a?.toUpperCase()) // 'null' 출력
}

?: (elvis operator)

객체가 null이 아니라면 그대로 사용하지만 null이라면 연산자 우측의 default 객체를 사용한다.

fun main() {        
    var a: String? = null
        
    println(a?:"default".toUpperCase()) // 'DEFAULT' 출력
}

!!. (non-null assertion operator)

참조 연산자를 사용 할때 null여부를 컴파일시 null 체크를 하지 않고 코드를 실행한다.
런타임시 null pointer Exception을 의도적으로 발생시킬 수 있다.

fun main() {        
    var a: String? = null
    
    println(a!!.toUpperCase()) // null pointer Exception 발생
}

스코프 함수와 같이 사용하기

null safe 연산자는 스코프 함수와 같이 사용하면 더욱 편리하다.
if 연산자 대신 사용하면 좀 더 깔끔한 코드를 구현 할 수 있다.

fun main() {        
    var a: String? = null
    var b: String? = "Kotlin"
    
    // a가 null임으로 스코프 함수 내의 구문이 동작하지 않음.
    a?.run {
        println(toUpperCase())
        println(toLowerCase())
    }
    
    b?.run {
        println(toUpperCase())
        println(toLowerCase())
    }
}
profile
머리에 다 안들어가서 글로 적는 중

0개의 댓글