40
확장 함수와 널이 될 수 있는 타입
때로는 눈에 보이는 것과 실체가 다를 수도 있다.
S?.f()는 s가 널이 될 수 있는 타입임을 암시한다. 그렇지 않다면 단순히 s.f()를 호출했을 것이다. 마찬가지로 t.f()는 t가 널이 될 수 없는 타입임을 암시하는 것처럼 보인다. 코틀린에서는 널이 될 수 없는 타입에 대해 안전한 호출이나 null 여부 검사가 필요 없기 때문이다. 하지만 t가 꼭 널이 될 수 없는 타입인 것은 아니다.
코틀린 표준 라이브러리는 다음과 같이 String의 확장 함수를 제공한다.
• isNullOrEmpty(): 수신 String이 null이거나 빈 문자열인지 검사한다.
• isNullOrBlank(): isNullOrEmpty()와 같은 검사를 수행한다. 그리고 수신 객체 String이 온전히 공백 문자(공백뿐 아니라 탭(\t)과 새줄 문자(\n)도 포함)로만 구성되어 있는지 검사한다.