반응형

2022.08.30 - [Development/Android] - [Android/안드로이드] 코틀린 require, requireNotNull, check, checkNotNull 이건 뭐지?

 

[Android/안드로이드] 코틀린 require, requireNotNull, check, checkNotNull 이건 뭐지?

이런 저런 코드들을 보다가 알게된 함수들인데 어떤건지 궁금해서 알아봤다. 함수명대로 매우 직관적인 뜻의 기능이더라. 정확하게 이것들을 포괄적으로 부르는 명칭을 알아보려고 했는데 따

solution94.tistory.com

배열과 관련돼서 알아보다가 예전에 알아봤던 기능과 굉장히 흡사한 스타일의 컬렉션 함수가 보여서 알아보았다. 다들 이름 그대로 매우 직관적인 기능들을 갖고 있고, 조건도 넣을 수 있기 때문에 때때로 편리하게 사용할 수 있을 것 같다.


first() | first(predicate: (T) → Boolean)
val myArray = arrayOf("Android", "Kotlin", "Solution", "Blog", "Tistory", "Looooooooog")
Log.d(TAG, "firstTest: ${myArray.first()}")
Log.d(TAG, "firstTest: ${myArray.first { value -> value.length < 5 }}")
Log.d(TAG, "firstTest: ${myArray.first { value -> value.length > 10 }}")

//	Android
//	Blog
//	Looooooooog

first()는 해당 배열의 첫 번째 인자를 반환한다. 단, 반환된 값이 null일 경우에는 NoSuchElementException이 발생한다.

 

 

firstOrNull() | firstOrNull(predicate: (T) → Boolean)
val myArray = arrayOf("Android", "Kotlin", "Solution", "Blog", "Tistory", "Looooooooog")
Log.d(TAG, "firstOrNullTest: ${myArray.firstOrNull()}")
Log.d(TAG, "firstOrNullTest: ${myArray.firstOrNull { value -> value.length < 5 }}")
Log.d(TAG, "firstOrNullTest: ${myArray.firstOrNull { value -> value.length > 11 }}")

//	Android
//	Blog
//	null

 first() 동일하지만 first()와는 다르게 null 값도 반환받는다.

 

 

last() | last(predicate: (T) → Boolean)
Log.d(TAG, "lastTest: ${myArray.last()}")
Log.d(TAG, "lastTest: ${myArray.last { value -> value.length < 5 }}")
Log.d(TAG, "lastTest: ${myArray.last { value -> value.length > 10 }}")

//	Looooooooog
//	Blog
//	Looooooooog

first()와 반대이다.

 

 

lastOrNull() | lastOrNull(predicate: (T) → Boolean)
Log.d(TAG, "lastOrNullTest: ${myArray.lastOrNull()}")
Log.d(TAG, "lastOrNullTest: ${myArray.lastOrNull { value -> value.length < 5 }}")
Log.d(TAG, "lastOrNullTest: ${myArray.lastOrNull { value -> value.length > 11 }}")

//	Looooooooog
//	Blog
//	null

마찬가지로 firstOrNull()와 반대이다.


예시에서는 조건으로 모두 length만 사용했는데, 변수 타입에 맞는 다른 조건들도 사용 가능하다. 예를 들면 타입이 String일 때 contains()를 사용해서 특정 문자가 포함되어 있는 인자를 반환받거나 equals()를 사용해 일치하는 인자를 찾거나 하는 식이다.

배열에 조건부 코드를 짤 때는 보통 반복문과 함께 사용했었는데 이것들을 사용하면 반복문이나 조건문을 줄일 수 있을 것 같다. 물론 어떤 게 더 적게 리소스를 사용하는지 까지는 모르겠지만... 그건 시간이 날 때 후에 테스트해보거나 하자.


https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/

 

kotlin.collections - Kotlin Programming Language

 

kotlinlang.org

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기