我有一个项目列表,我想在使用它之前编辑它的值。我正在使用该map
函数来更新其中的每个项目。但这里的问题是,我只想在列表大小为 1 时更新项目。如果大小大于 1,我想按原样返回列表。我怎样才能实现这一点?
myList.map {
if(resources.getBoolean(R.bool.is_tablet) && it.itemList.size<6 && it.layerType == DOUBLE_LIST) {
it.layerType = SINGLE_LIST_AUTO
it.itemList.forEach {sectionItem->
sectionItem.layerType = SINGLE_LIST_AUTO
}
it
}else{
it
}
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*lex 14
您可以尝试在地图之前使用过滤器:
.filter { it.itemList.size == 1 }
Run Code Online (Sandbox Code Playgroud)
我假设您只想在满足某些条件时修改列表中的项目,否则返回未修改的相同列表。
如果您想添加一些语法糖,您可以考虑在这种情况下使用 takeIf { }
fun updateItemsInMyList(myList:List<SomeClass>): List<SomeClass> {
return myList
.takeIf {
// condition to modify items in your list
it.size > 1 && otherConditions
}
?.apply {
//update your items inside the list
}
?: myList // return the unmodified list if conditions are not met
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16130 次 |
最近记录: |