보이는 것과 실체가 다를 수 있다?
오늘의 아톰은 코틀린 표준 라이브러리에서 제공하는 널과 관련된 함수에 대해서 알아볼 예정이다.
isNullOrEmpty()
: 수신 String이 null이거나 빈 문자열인지 검사
isNullOrBlank()
: isNullOrEmpty()와 같은 검사를 수행
: 온전히 공백 문자(공백 뿐 아니라 탭(/t)과 새줄 문자(/n)도 포함)로만 구성되어 있는지 검사
import atomictest.eq
fun main(){
val s1:String? = null
s1.isNullOrEmpty() eq true
s1.isNullOrBlank() eq vtrue
val s2 = ""
s2.isNullOrEmpty() eq true
s2.isNullOrBlank() eq true
val s3 = " \t\n"
s3.isNullOrEmpty() eq false
s3.isNullOrBlank() eq true
}
[ isNullOrEmpty() 비확장 함수로 작성 ]
위의 isNullOrEmpty()를 널이 될 수 있는 String? s를 파라미터로 받는 비확장 함수로 다시 작성이 가능하며,
확장 함수가 더 읽기 간편함
import atomictest.eq
fun isNullOrEmpty(s: String?): Boolean =
s == null || s.isEmpty()
// fun String?.isNullOrEmpty(s: String?): Boolean =
// s == null || s.isEmpty()
fun main() {
isNullOrEmpty(null) eq true
isNullOrEmpty("") eq true
// "".isNullOrEmpty() eq true
}
: 확장 함수는 this를 사용해 수신 객체(확장 대상 타입에 속하는 객체)를 표현
: 널이 될 수 있는 타입으로 지정하기 위해서는 확장 대상 타입 뒤에 ?를 붙이면 됨
* 쇼트 서킷 : || 에서 첫 번째 식이 true이면 두 번째 식을 검증하지 않아도 true로 결과가 결정됨
'공부 자료 > 코틀린[Kotlin]' 카테고리의 다른 글
[Atomic 42] 확장 프로퍼티 (0) | 2024.02.21 |
---|---|
[Atomic 41] 제네릭스 소개 (0) | 2024.02.21 |
[Atomic 39] 널 아님 단언 (0) | 2024.02.20 |
[Atomic 38] 안전한 호출과 엘비스 연산자 (0) | 2024.02.13 |
[Atomic 37] 널이 될 수 있는 타입 (0) | 2024.02.13 |