ubu
06/01/2021, 1:12 PMsealed class GUIModel {
abstract val id: Id
interface Selectable {
val isSelected : Boolean
}
data class Model1(override val id: Id, override val isSelected: Boolean) : GUIModel(), Selectable
data class Model2(override val id: Id, override val isSelected: Boolean) : GUIModel(), Selectable
data class Model3(override val id: Id) : GUIModel()
}
is there a way to create a copy of the instance with updated isSelected
field? Without having to check the type:
fun GUIModel.createCopyWithUpdatedSelection(isSelected: Boolean) : GUIModel {
return when(this) {
is Model1 -> this.copy(isSelected = isSelected)
is Model2 -> this.copy(isSelected = isSelected)
is Model3 -> this
}
}
and without switching to var
in Selectable
interface.
Thanks!mkrussel
06/01/2021, 1:23 PM