我们有更好的方法来简化这段代码吗?

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 ""
}