이런 저런 코드들을 보다가 알게된 함수들인데 어떤건지 궁금해서 알아봤다. 함수명대로 매우 직관적인 뜻의 기능이더라.
정확하게 이것들을 포괄적으로 부르는 명칭을 알아보려고 했는데 따로 존재하지 않는 것 같다.(아니면 내가 못 찾았거나) 다른 글들에서는 '예외 처리 함수', '조건 확인 함수'라고 명시해두었던데, 공식적인 명칭은 아닌 듯 하다.
require(value:Boolean) || require(value: Boolean, lazyMessage: () → Any)
전달받은 파라미터 값이 거짓일 경우 IllegalArgumentException을 발생시킨다.
lazyMessage를 전달할 경우 파라미터 값이 거짓일 때 이를 발생시킨다.
require(true) //
require(false) // IllegalArgumentException 발생
require(true) { Log.d(TAG, "requireTest: true") } //
require(false) { Log.d(TAG, "requireTest: false") } // "requireTest: false"
requireNotNull(value: T?) || requireNotNull(value: T?, lazyMessage: () → Any)
전달받은 파라미터 값이 Null이 아니라면 결과 값을 변수에 할당하고, Null일 경우 IllegalArgumentException을 발생시킨다.
lazyMessage를 전달할 경우 Null이라면 이를 발생시킨다.
val v = 10 - 5
val a = requireNotNull(v >= 5)
Log.d(TAG, "requireNotNullTest a : $a") // true
val b = requireNotNull(v < 5)
Log.d(TAG, "requireNotNullTest b : $b") // false
requireNotNull(0) //
requireNotNull(null) // "Required value was null."
requireNotNull(0) { "this is 0" } //
requireNotNull(null) { "this is null" } // "this is null"
check(value: Boolean) || check(value: Boolean, lazyMessage: () → Any )
전달받은 파리미터 값이 거짓일 경우 IllegalStateException을 발생시킨다.
lazyMessage를 전달할 경우 거짓이라면 이를 발생시킨다.
check(true) //
check(false) // IllegalStateException 발생
check(true) { Log.d(TAG, "checkTest: true") } //
check(false) { Log.d(TAG, "checkTest: false") } // "checkTest: false"
checkNotNull(value: T?) || checkNotNull(value: T?, lazyMessage: () → Any)
전달받은 파라미터 값이 Null이라면 IllegalStateException을 발생시킨다.
lazyMessage를 전달할 경우 Null이라면 이를 발생시킨다.
checkNotNull(0) //
checkNotNull(null) // IllegalStateException 발생
checkNotNull(0) { Log.d(TAG, "checkNotNullTest: 0") } //
checkNotNull(null) { Log.d(TAG, "checkNotNullTest: null") } // "checkNotNullTest: null"
지극히 개인적이지만, 조건과 관련된 부분들은 코드 상에서 조금 길어지더라도 확실하게 걸러내거나 적어도 어플리케이션이 죽는 경우를 없애기 위해 여러 Exception들을 발생하지 않도록 하고 있기도 하고, 코틀린에선 if문이나 let으로 비교적 편리하게 조건 관련 부분들을 처리하고 있어서 이것들이 왜 필요한지 혹은 효율적인 건지까지는 잘 모르겠다. 이 녀석들이 코틀린에만 있는게 아니고 다른 곳에서 이전부터 많이 쓰이던 건데 단순히 코틀린에서도 사용할 수 있게 해준 것일 뿐인가 싶기도하다만 알아보려해도 원하는 내용들이 나오질 않더라...
https://seosh817.tistory.com/155
https://jinee0717.tistory.com/10
'Android (Kotlin)' 카테고리의 다른 글
[Android/안드로이드] first, firstOrNull, last, lastOrNull 이건 뭐지? (0) | 2022.09.05 |
---|---|
[Android/안드로이드] TODO(), error() (0) | 2022.08.31 |
[Android/안드로이드] 위치 서비스(GPS) 기능 설정 팝업 (2) | 2022.08.26 |
[Android/안드로이드] 프래그먼트(Fragment)가 뭐지? (0) | 2022.08.23 |
[Android/안드로이드] 서비스는 뭐지? (Background, Foreground) (0) | 2022.08.19 |
최근댓글