在 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>>
,其中T
是Iterable
的通用类型。您可以使用来再次转换分区值let
:
val (specificMembers, regularMembers) = lists
.partition { it is SpecificMember }
.let { Pair(it.first as List<SpecificMember>, it.second) }