val myDescriptions = mutableListOf("myValue") // and maybe others
media.descriptions?.forEach(myDescriptions::add)
如果您需要处理media的描述,那么您无法使其更具可读性...:
if (media.descriptions == null) {
media.descriptions = mutableListOf("myValue") // just using mutable to make it clear
} else {
media.descriptions += "myValue"
}
或者:
if (media.descriptions == null) {
media.descriptions = mutableListOf<String>()
}
media.descriptions?.add("myValue")
3条答案
按热度按时间thigvfpy1#
您可以将Elvis运算符
?:
与run
结合使用:media.descriptions
不为null,安全调用操作符?.
使用块it.add(e)
调用also
,将新元素添加到现有列表中(并返回传递给它的media.descriptions
)。media.descriptions
为null,则?.
不执行also
,而是计算为null
,Elvis运算符?:
返回其右侧,执行初始化字段的run
块。另一种方法是始终赋值(如果字段不为空,则重新赋值),这可能不太直观:
这类似地工作,但是Elvis操作符
?:
的两侧都返回要分配给media.descriptions
字段的内容,其中左侧具有将元素添加到现有列表的副作用(通过also
)。fnvucqvd2#
我可能会用另一种方法来做,除了你需要改变
media
本身(见下文),即首先创建你的列表,如果media.descriptions
不是null
,则将所有其他条目添加到该列表中:如果您需要处理
media
的描述,那么您无法使其更具可读性...:或者:
avwztpqn3#
您可以使用elvis
?:
运算符来分配列表。我能想到的最简单的方法就是