더북(TheBook)

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

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

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