코틀린

[코틀린 Kotlin] `?:` 엘비스 연산자 vs `?.let` - null 일 때 대체값 vs null이 아닐 때 반환값

멋쟁휘개발자 2024. 9. 8. 20:15

`?:`와 `?.let`

둘 다 코틀린에서 널 값을 다룰 때 사용하는 방법이지만, 용도와 동작 방식이 조금 다릅니다. 

  • `?:`는 null일 때 기본 값을 반환
  • `?.let`은 null이 아닐 때만 특정 작업을 실행

-> ?:는 항상 값을 반환하지만, ?.let은 null이 아닐 때만 블록을 실행

1. ?: (엘비스 연산자)

  • 용도: 변수의 값이 null일 때 대체값을 제공할 때 사용합니다.
  • 동작 방식: 좌변의 값이 null이면 우변의 값을 반환하고, 그렇지 않으면 좌변의 값을 반환합니다.
val x: String? = null
val result = x ?: "default value"
println(result)  // 출력: default value

2. ?.let (안전 호출과 함께 사용하는 let 함수)

  • 용도: 변수의 값이 null이 아닐 때만 특정 작업을 수행하고 싶을 때 사용합니다.
  • 동작 방식: 값이 null이 아닐 때만 let 블록을 실행하며, let 블록 내에서는 it을 통해 해당 값을 사용할 수 있습니다.
val x: String? = "Hello"
x?.let {
    println(it)  // 출력: Hello
}