Uing? Uing!!

[내 맘대로 정리한 Kotlin] let으로 null-check 하기 본문

Kotlin

[내 맘대로 정리한 Kotlin] let으로 null-check 하기

Uing!! 2020. 11. 17. 10:47
반응형

Null-check

Kotlin을 이용해 개발하다 보면 nullable한 값을 처리해야 할 일이 잦다.

x가 확실히 non-null이라는 것을 가정할 경우에는 x!!로 활용하여 null이면 exception(NPE, Null-Pointer Exception)이 나도록 하기도 하고,

반대로 null일때도 다른 값으로 활용하고 싶다면 x?:0과 같이 null일 때 대신 사용할 값을 정해 주기도 한다.

 

하지만 '어떤 값이 null이 아닐 경우에만' 특정 기능을 실행하고 싶을 때도 많다.

예를 들면 '저장된 이름이 null이 아닌 경우에만 인삿말을 출력한다'와 같은 상황.

일반적으로 이렇게 어떤 값이 null인지 아닌지 확실하지 않는 경우, 이를 체크하기 위해 아래처럼 사용하곤 한다.

if (name != null) {
    println("안녕하세요, $name 님.")
}

 

Kotlin의 Let문

Kotlin에는 let, apply, run, also라는 특이한 문법들이 있다.

각각에 대해서도 이후에 소개할 생각이지만, 우선은 let에 대해서만 이야기하겠다.

 

let은 그 구문 안에서 주어진 값을 활용하여 코드를 실행한다.

이를테면 이런 식이다.

name.let{
    println("안녕하세요, $it 님.")
}

이렇게 name.let을 하면, 중괄호 안에서 name을 it이라는 형태로 사용할 수 있다.

하지만 위의 코드만으로는 null-check가 되지 않아서, name이 null이라면 "안녕하세요, null 님."이라고 출력이 된다.

 

Let으로 null-check 하기

Let으로 null-check를 하기 위해서 복잡한 처리를 해야 하지는 않는다.

단순히 (변수).let이 아닌, (변수)?.let으로 작성하면 된다. 이렇게.

name?.let{
    println("안녕하세요, $it 님.")
}

?한 글자만을 이용해 null-check를 넣어 주면,

let문은 name이 null인지 아닌지를 판별한 후, null이 아닐 경우에만 그 안의 내용을 실행해 준다.

반응형
Comments