[코틀린 인 액션] CH8 고차 함수: 파라미터와 반환 값으로 람다 사용 Quiz

0

코틀린 인 액션

목록 보기
10/13
post-thumbnail

[코틀린 인 액션] CH8 고차 함수: 파라미터와 반환 값으로 람다 사용 Quiz

이 포스팅은 <<Kotlin in Action>>, 드미트리 제메로프 & 스베트라나 이사코바, 에이콘출판사(2017)을 읽고 개인 학습용으로 정리한 글입니다.

data class Person(val name: String, var age: Int)

fun main() {
    val people1 = listOf(Person("Alice", 20), Person("Bob", 21), Person("Charlie", 23))
    val people2 = setOf(Person("Alice", 20), Person("Bob", 21), Person("Charlie", 23))
    
     //이름이 Alice인 사람 찾기
    people1.findPeople{p -> p.name == "Alice"}
    people2.findPeople{p -> p.name == "Alice"}
    //나이가 20살 초과인 사람 찾기
    people1.findPeople{p -> p.age > 20}
    people2.findPeople{p -> p.age > 20}
}
  • 사람의 이름과 나이를 저장하는 data class Person이 있다.

  • Person 타입 객체들을 저장하는 코틀린 컬렉션 타입의 people1, people 2이 있다.

  • main 함수를 실행했을 때 아래와 같은 출력이 나오도록 findPeople을 구현하시오.

    • findPeople 함수는 인라인 함수이다.
    • findPeople 함수는 함수 타입의 파라미터를 갖고, 파라미터의 이름은 predicate 이다.
    • findPeople 함수의 내부에서 forEach 함수를 사용한다.
start search
Person(name=Alice, age=20)
end search

start search
Person(name=Alice, age=20)
end search

start search
Person(name=Bob, age=21)
Person(name=Charlie, age=23)
end search

start search
Person(name=Bob, age=21)
Person(name=Charlie, age=23)
end search

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

//Person 타입 객체들을 저장하는 코틀린 컬렉션 타입 확장
inline fun Collection<Person>.findPeople(predicate: (Person) -> Boolean){
    println("start search")
    forEach{
        if(predicate(it)) println(it)
    }
    println("end search\n")
} 
profile
Be able to be vulnerable, in search of truth

0개의 댓글