다음은 위 함수를 간단히 테스트하는 코드다.
NullableExtensions/StringIsNullOr.kt
import atomictest.eq
fun main() {
val s1: String? = null
s1.isNullOrEmpty() eq true
s1.isNullOrBlank() eq true
val s2 = ""
s2.isNullOrEmpty() eq true
s2.isNullOrBlank() eq true
val s3: String = " \t\n"
s3.isNullOrEmpty() eq false
s3.isNullOrBlank() eq true
}
함수 이름을 보면 수신 객체가 널이 될 수 있는 타입인 것처럼 보인다. S1은 널이 될 수 있는 타입이지만, 안전한 호출을 사용하지 않고 isNullOrEmpty()나 isNullOrBlank()를 호출할 수 있다. 왜냐하면 이들이 널이 될 수 있는 타입 String?의 확장 함수로 정의되어 있기 때문이다.