You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mutableStateOf时RoleState.copy()报Unresolved reference错误

解决Kotlin中copy方法“Unresolved reference”错误的问题

你的猜测完全正确——普通类不会自动生成copy方法,只有被声明为data class的数据类,Kotlin编译器才会自动生成copy、equals、hashCode、toString这些工具方法。你当前的RoleState是普通类,所以没有copy方法,自然会报找不到引用的错误。

解决步骤

把RoleState改成数据类即可:

data class RoleState(
    var roles: List<String> = emptyList(),
    var selectedRoles: List<String> = emptyList()
)

修改后,编译器会自动为RoleState生成copy方法,你就能正常调用了。

额外逻辑修正

你代码里的null分支处理有问题:result.data ?: kotlin.run{... return@launch}会导致当result.data为null时,直接结束整个launch协程块,copy赋值操作根本不会执行。正确的写法应该在null分支返回一个合法的List<String>值(比如空列表),再触发Snackbar事件:

rolesState = rolesState.copy(
    selectedRoles = result.data ?: run {
        _eventFlow.emit(UiEvent.ShowSnackbar(UiText.errorUnknown()))
        emptyList()
    }
)

或者拆分逻辑,让代码更清晰:

val newSelectedRoles = result.data ?: run {
    _eventFlow.emit(UiEvent.ShowSnackbar(UiText.errorUnknown()))
    emptyList()
}
rolesState = rolesState.copy(selectedRoles = newSelectedRoles)

内容的提问来源于stack exchange,提问作者CryptoCode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 19:30:36