보통은 다음 예제의 [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을 만들어낸다.

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