Kotlin数据类复制与var值更改
为什么不能复制var值更改的数据类对象?
data class AppState(var list: List<Image> = ArrayList<Image>(), val uiState: UIState = UIState.LIST, val isFetching: Boolean = false) ... val list = state!!.list.sublist(0,1); state.copy(list = list) // No change state.copy(isFetching = true) // Works like a charm
copy
方法不会改变原始对象。 它返回一个新的对象与更改的值。 我试过你的例子,并且当我在一个新的val
捕获返回的对象时,你的两个副本都按预期工作:
val list = state!!.list.subList(0,1) // Creates a new object with the new list. val withNewList = state.copy(list = list) // Creates a new object with the new isFetching. val withNewIsFetching = withNewList.copy(isFetching = true)
如果你想改变你的state
的列表值,你可以这样做:
val list = state!!.list.subList(0,1) state.list = list