我们有更好的方法来简化这段代码吗?
Do we have better way to simplify this code?
viewModel.sectionTypeId, specialSectionId, specialSectionId -> 这些值在两种情况下都常用
if (data.section_type == "customized") {
viewModel.sectionTypeId = data.id ?: 0
viewModel.specialSectionId = data.id ?: 0
viewModel.specialSectionName = data.name ?: ""
} else {
viewModel.specialSectionId = 0
viewModel.specialSectionName = ""
viewModel.sectionTypeId = 0
}
你可以这样做:
viewModel.apply {
val customized = data.section_type == "customized"
sectionTypeId = if(customized) data.id ?: 0 else 0
specialSectionId = if(customized) data.id ?: 0 else 0
specialSectionName = if(customized) data.name ?: "" else ""
}
由于kotlin中没有三元运算符,你可以使用if表达式,将重复的代码赋值给这样的值:
viewModel.apply {
val customized = data.section_type == "customized"
val iD = if(customized) data.id ?: 0 else 0
sectionTypeId = iD
specialSectionId = iD
specialSectionName = if(customized) data.name ?: "" else ""
}
viewModel.sectionTypeId, specialSectionId, specialSectionId -> 这些值在两种情况下都常用
if (data.section_type == "customized") {
viewModel.sectionTypeId = data.id ?: 0
viewModel.specialSectionId = data.id ?: 0
viewModel.specialSectionName = data.name ?: ""
} else {
viewModel.specialSectionId = 0
viewModel.specialSectionName = ""
viewModel.sectionTypeId = 0
}
你可以这样做:
viewModel.apply {
val customized = data.section_type == "customized"
sectionTypeId = if(customized) data.id ?: 0 else 0
specialSectionId = if(customized) data.id ?: 0 else 0
specialSectionName = if(customized) data.name ?: "" else ""
}
由于kotlin中没有三元运算符,你可以使用if表达式,将重复的代码赋值给这样的值:
viewModel.apply {
val customized = data.section_type == "customized"
val iD = if(customized) data.id ?: 0 else 0
sectionTypeId = iD
specialSectionId = iD
specialSectionName = if(customized) data.name ?: "" else ""
}