哪个是 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,这两个解决方案是等效的。