我通过Kotlin koan分区进行了工作,并通过了单元测试:
fun Shop.getCustomersWithMoreUndeliveredOrdersThanDelivered(): Set<Customer> =
customers.filter{it.orders.partition{it.isDelivered}
.let{(delivered, undelivered) -> delivered.size < undelivered.size}}.toSet()
这是解决方案的变体:
fun Shop.getCustomersWithMoreUndeliveredOrdersThanDelivered(): Set<Customer> =
customers.filter {
val (delivered, undelivered) = it.orders.partition { it.isDelivered }
undelivered.size > delivered.size
}.toSet()
是否有理由更喜欢这些解决方案中的一种?
Kotlin Koans是为Kotlin 1.0编写的,它不支持lambda参数的解构。
否则,如果您的目标是Kotlin 1.1,这两种解决方案是等效的。