我在Kotlin
的代码中有一个重复模式,在该模式中,我必须检查项目是否不是null
并将其添加到集合中,然后将其返回。我已经找到了Kotlin函数listOfNotNull
,但是如果我想向集合添加集合(替换addAll()
),将无法工作。您是否知道将元素添加到集合的非冗长方式?
我要简化的代码示例:
private fun getItems(): List<BaseItem> {
val items = ArrayList<BaseItem>()
componentA?.let { items.add(it) }
componentB?.let {
items.add(it)
}
additionalComponents?.let {
items.addAll(it)
}
componentD?.let { items.addAll(it) }
return items
}
答案 0 :(得分:1)
您可以使用listOfNotNull
函数:
val nonNullAdditionalComponents: List<BaseItem> = additionalComponents ?: listOf()
val items: List<BaseItem> = listOfNotNull(componentA, componentB, *nonNullAdditionalComponents.toTypedArray(), componentD)
在这种情况下,如果要将数组的内容传递给函数,则使用spread operator *
。