1

如果我有一堂课,例如

data class Departments (
  val customerFacing: Commercial,  
  val warehouse: Operational,
  val accounting: Auditing) 

是否有更类似于 Kotlin 的方式来实现以下目标?

val list: MutableList<Sections<*>> = arrayListOf()
if(deparments.customerFacing != null) {  
   list.add(Section(manager, deparments.customerFacing)
}
if(deparments.warehouse != null) {  
   list.add(Section(manager, deparments.warehouse)
}
if(deparments.accounting != null) {  
   list.add(Section(manager, deparments.accounting)
}


data class Section<T>(val manager: String, val section: T)
4

2 回答 2

3

根据 Departments 类定义,它的属性不能为空,因此您不需要检查是否为空。但如果他们是:

data class Departments (
  val customerFacing: Commercial?,  
  val warehouse: Operational?,
  val accounting: Auditing?) 

您不必使用if,您可以使用运营商?.进行安全通话。

deparments.customerFacing?.let{list.add(Section(manager, it)}
deparments.warehouse?.let{list.add(Section(manager, it)}
deparments.accounting?.let{list.add(Section(manager, it)}

如果不为空则执行

于 2019-10-10T20:43:08.570 回答
1

正如@alfcope 提到的,如果部门字段可以为空,我应该将它们建模为可空类型。

您可以执行以下操作:

val result = listOf(departments)
    .flatMap { listOfNotNull(it.customerFacing, it.warehouse, it.accounting) }
    .map { Session(manager, it) } 
于 2019-10-10T20:53:55.143 回答