在 Kotlin ,我可以:

val (specificMembers, regularMembers) = members.partition {it is SpecificMember}

但是据我所知我不能做类似的事情:
val (specificMembers as List<SpecificMember>, regularMembers) = members.partition {it is SpecificMember}

我的问题是-是否有一种惯用的方法来按类对iterable进行分区,并在需要时将这些已分区的部分类型化转换。

最佳答案

partition函数将返回Pair<List<T>, List<T>>,其中TIterable的通用类型。您可以使用来再次转换分区值let:

val (specificMembers, regularMembers) = lists
    .partition { it is SpecificMember }
    .let { Pair(it.first as List<SpecificMember>, it.second) }

10-06 07:27