더북(TheBook)

보통은 다음 예제의 [2]에서처럼 엘비스 연산자를 안전한 호출 다음에 사용한다. 안전한 호출이 null 수신 객체에 대해 만들어내는 null 대신 디폴트 값을 제공하기 위해서다.

SafeCallsAndElvis/ElvisCall.kt

package safecalls
import atomictest.eq

fun checkLength(s: String?, expected: Int) {
  val length1 =
    if (s != null) s.length else 0 // [1]
  val length2 = s?.length ?: 0     // [2]
  length1 eq expected
  length2 eq expected
}

fun main() {
  checkLength("abc", 3)
  checkLength(null, 0)
}

checkLength() 함수는 앞에서 본 SafeCall.kt와 비슷하다. 하지만 expected 파라미터의 타입이 이제는 널이 될 수 없는 타입이다. [1][2]null 대신 0을 만들어낸다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.