在Kotlin中添加元素的优雅方式

时间:2018-12-20 09:38:20

标签: design-patterns collections kotlin

我在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
}

1 个答案:

答案 0 :(得分:1)

您可以使用listOfNotNull函数:

val nonNullAdditionalComponents: List<BaseItem> = additionalComponents ?: listOf()
val items: List<BaseItem> = listOfNotNull(componentA, componentB, *nonNullAdditionalComponents.toTypedArray(), componentD)

在这种情况下,如果要将数组的内容传递给函数,则使用spread operator *