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