핀수로그
  • [Kotlin] takeIf
    2023년 12월 26일 22시 25분 37초에 업로드 된 글입니다.
    작성자: 핀수
    728x90
    반응형

    주어진 조건을 만족하는 경우 해당 객체를 반환하는 함수이다.

    (만족하지 못하는 경우 null을 반환함)

    takeIf는 단일 객체에 대한 필터링을 도와준다.

    inline fun <T> T.takeIf(predicate: (T) -> Boolean): T?

     

    주어진 조건 (it.age > 30) 을 만족하는 경우 해당 객체를 반환

    그렇지 않은 경우 null을 반환하는 것을 확인할 수 있다.

    data class Person(
            val name: String,
            val age: Int,
    )
    
    fun main() {
        val list = listOf(Person("amy", 34), Person("john", 45), Person("tom", 27))
        list.forEach {
            println(it.takeIf { it.age > 30 })
        }
        /*
        Person(name=amy, age=34)
        Person(name=john, age=45)
        null
        */
    }

     

    이와 반대되는 함수로 takeUnless가 있다.

    조건을 만족하지 않는 경우 값을 반환하고, 만족하는 경우 null을 반환한다.

    위의 예시에서 takeUnless를 사용하면 결과는 아래와 같다.

    fun main() {
        val list = listOf(Person("amy", 34), Person("john", 45), Person("tom", 27))
        list.forEach {
            println(it.takeUnless { it.age > 30 })
        }
        /*
        null
        null
        Person(name=tom, age=27)
        */
    }

    공부하며 작성된 글이라 잘못된 정보가 있을 수 있습니다.

    말씀해주시면 수정하겠습니다. 감사합니다.

    References

    아래 글을 참고하여 작성 되었습니다.

     

    Scope functions | Kotlin

     

    kotlinlang.org

     

    728x90
    반응형
    댓글