0
我有一段代码如下(简化来解释问题)。从RAWDATA,我想过滤掉那些不具有converter
A转换器类型,然后对剩余的,转换data
到listitem
如何从地图返回非空项目的列表映射?
data class RawData(val type: String, val data: Data)
interface Converter {
fun convert(data: Data): ListItem
}
fun transform(): List<ListItem> {
val providerTypeMap = modelViewProvider.associateBy({it.type}, {it})
return rawDataList.filter {
converter[it.type] != null
}.map {
converter[it.type]?.create(it.data) ?: object: ListItem {}
}
}
注:我想返回类型为List<ListItem>
而不是List<ListItem?>
。为了做到这一点,我需要有这一行
converter[it.type]?.create(it.data) ?: object: ListItem {}
这对我的?
和?:
是很丑陋的,因为我们知道到那时,我们已经筛选并只保留该converter[it.type] != null
是否有我的方式来摆脱我的代码中的?
和?: ListItem{}
?
我会为我的公关获得一个红色标记:P – Elye
我编辑了答案。核实。 –
不错的@Alexandr – Elye