다음은 위 함수를 간단히 테스트하는 코드다.

    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?의 확장 함수로 정의되어 있기 때문이다.

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