Элегантный способ добавления элементов в коллекции в Котлине - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть повторяющийся шаблон в моем коде в 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 голосов
/ 20 декабря 2018

Вы можете использовать listOfNotNull функцию:

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

В этом случае мы используем spread operator *, если мы хотим передать содержимое массива в функцию.

...