#22 Kotlin Koans Collections/All Any and other predicates 해설

1 소개



Kotlin 공식 레퍼런스의 Kotlin Koans Collections/All Any and other predicates의 해설 기사입니다.

Kotlin Koans를 통해 Kotlin을 배우는 사람들의 도움이 되길 바랍니다.

다만, 레퍼런스를 자력으로 읽는 힘을 기르고 싶은 분은,
곧이 기사를 보지 마십시오!

한 번 각자로 도전하고 나서, 눈에 띄게 된다고 생각합니다

2 any()/all()/count()/find()



any() : 호출자의 콜렉션의 모든 요소 중, 인수로서 건네주는 조건식을 만족하는 것이 있으면 true를 돌려준다.

all() : 호출자 컬렉션의 모든 요소가 인수로 전달하는 조건식을 충족하면 true를 반환합니다.

count(): 호출자 컬렉션의 요소 중 인수로 전달할 조건식을 만족하는 요소의 개수를 반환합니다.

find() : 호출자 컬렉션의 요소 중 인수로 전달할 조건식을 만족하는 요소의 값을 반환합니다. (조건을 만족하는 요소가 복수개 있는 경우는, 선두에 가까운 것이 반환된다.)

다음은 Kotlin koans의 예입니다.
val numbers = listOf(-1, 0, 2)
val isZero: (Int) -> Boolean = { it == 0 }
numbers.any(isZero) == true
numbers.all(isZero) == false
numbers.count(isZero) == 1
numbers.find { it > 0 } == 2

3 Collections/All Any and other predicates 해설



Kotlin Koans Collections/All Any and other predicates의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.

본문과 코드를 살펴보자.

Implement all the functions below using all, any, count, find.
val numbers = listOf(-1, 0, 2)
val isZero: (Int) -> Boolean = { it == 0 }
numbers.any(isZero) == true
numbers.all(isZero) == false
numbers.count(isZero) == 1
numbers.find { it > 0 } == 2

All_Any_and_other_predicates
// Return true if all customers are from the given city
fun Shop.checkAllCustomersAreFrom(city: City): Boolean = TODO()

// Return true if there is at least one customer from the given city
fun Shop.hasCustomerFrom(city: City): Boolean = TODO()

// Return the number of customers from the given city
fun Shop.countCustomersFrom(city: City): Int = TODO()

// Return a customer who lives in the given city, or null if there is none
fun Shop.findAnyCustomerFrom(city: City): Customer? = TODO()

checkAllCustomersAreFrom(city: City)
Shop 속성 customers의 모든 요소(Customer) city가 인수로 받는 city와 일치하면 true를 반환하도록 구현합니다.
hasCustomerFrom(city: City)
Shop의 프로퍼티 customers의 요소(Customer)의 city 중, 인수로서 받는 city와 일치하는 것이 1개라도 true를 돌려주도록(듯이) 구현합니다.
countCustomersFrom(city: City)
Shop의 속성 customers 요소(Customer)의 city가 인수로 받는 city와 일치하는 개수를 반환하도록 구현합니다.
findAnyCustomerFrom(city: City)
Shop의 프로퍼티 customers의 요소(Customer) 중 인수로서 받는 city를 가지는 (요소의 선두의) 것을 돌려주고, 없으면 null를 돌려주도록(듯이) 구현합니다.

따라서 다음과 같은 구현이 됩니다.

All_Any_and_other_predicates
// Return true if all customers are from the given city
fun Shop.checkAllCustomersAreFrom(city: City): Boolean = customers.all{ it.city == city }

// Return true if there is at least one customer from the given city
fun Shop.hasCustomerFrom(city: City): Boolean = customers.any{ it.city == city }

// Return the number of customers from the given city
fun Shop.countCustomersFrom(city: City): Int = customers.count{ it.city == city }

// Return a customer who lives in the given city, or null if there is none
fun Shop.findAnyCustomerFrom(city: City): Customer? = customers.find{ it.city == city }


4 마지막으로



다음에는 Kotlin Koans Collections/FlatMap의 해설을 하겠습니다

좋은 웹페이지 즐겨찾기