哪个是 Kotlin koan "Partition" 的首选解决方案,为什么?
Which is the preferred solution for Kotlin koan "Partition" and why?
我研究了 Kotlin koan Partition,最后得到了这个,它通过了单元测试:
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,这两个解决方案是等效的。
我研究了 Kotlin koan Partition,最后得到了这个,它通过了单元测试:
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,这两个解决方案是等效的。