본문 바로가기
Kotlin

Kotlin에서 null 안정성을 강화: safe call과 Elvis 연산자

by Going9 2024. 2. 29.

코틀린은 null 안정성을 강화하기 위해 세이프 콜(`?.`)과 엘비스 연산자(`?:`)를 제공합니다. 이 두 연산자를 적절히 활용하여 코드를 작성하면, null에 대한 예기치 못한 에러를 방지하고 더 안전한 프로그램을 만들 수 있습니다.

1. safe call: ?.

"?."은 객체나 변수가 null이 아닐 때에만 해당 멤버나 메소드에 접근할 수 있게 합니다. 

 

예를 들어

val text: String? = "NotNull"
val length: Int? = text?.length  // length == 3

 

위 코드에서는 `text?.length`는 `text`가 null이 아니니기에 `length`메소드를 호출할 수 있습니다. 따라서 변수 `length`에는 최종적으로 `3`이 담기게 됩니다.

val text: String? = null
val length: Int? = text?.length  // length == null

 

하지만 위 코드예시에서는 `text`가 null이고 `length` 메소드를 호출할 수 없게 되어 변수 `length`에는 null이 담기게 됩니다.

 

2. Elvis 연산자: ?:

"?:"는 null일 경우 대체값을 제공하는 데 사용됩니다.

 

예를 들어

val nullableString: String? = "NotNull"
val result: String = nullableString ?: "Null"  // result == "NotNull"

 

위 코드에서 `nullableString`이 null이 아니기에 변수 `result`에 "NotNull"이 담깁니다.

val nullableString: String? = null
val result: String = nullableString ?: "Null"  // result == "Null"

 

하지만 위 코드에서는 `nullableString`이 null 이고 그에 따라 대체값인 "Null"이 사용됩니다. 결국 변수 `result`에는 "Null"이 담기게 됩니다.


이와 같이 세이프 콜과 엘비스 연산자를 적절히 활용하여 코드를 작성하면, null에 대한 안전성을 강화하고 코드의 예측 가능성을 향상시킬 수 있습니다.