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