“未解析的参考:复制”(如果使用 ||)数据类检查中的运算符

问题描述 投票:0回答:1

拥有此状态:

sealed interface BusStopsDBScreenUiState {
    val message: StringResource?
    data class Loading(override val message: StringResource? = null) : BusStopsDBScreenUiState
    data class Error(override val message: StringResource? = null) : BusStopsDBScreenUiState
    data class Success(val data: List<BusStop>, override val message: StringResource? = null) : BusStopsDBScreenUiState
}

还有这个检查:

if ((currentState is BusStopsDBScreenUiState.Success) || (currentState is BusStopsDBScreenUiState.Error))
    _uiState.value = currentState.copy(message = null)
}

我在

copy
通话中收到此错误:

未解决的参考:复制

如果我删除

||
运算符并简单地使用
if (currentState is BusStopsDBScreenUiState.Success)
,那么复制就不会再出现该错误。

这怎么可能?怎么解决这个问题?

android kotlin android-jetpack-compose
1个回答
0
投票

您只能在数据类上使用

copy

currentState
无法智能转换为任何特定数据类,因为它可能是
Success
Error
。所以它的类型是常见的超类型
BusStopsDBScreenUiState
,这是一个接口而不是数据类,因此没有
copy
函数。

© www.soinside.com 2019 - 2024. All rights reserved.