为什么我不能直接从 Kotlin 中的密封类获取数据?

Hel*_*oCW 0 kotlin

我希望从密封类中获取数据Result<out R>,但val mydata = queryList.data导致以下错误,我该如何修复它?

错误信息 智能转换为“Result.Success<Flow<List>>”是不可能的,因为“queryList”是具有开放或自定义 getter 的属性

@Composable
fun Greeting(
    name: String   
) {
     Column( ) {
        val queryList by produceState(initialValue = aa() ) {
            value = mViewMode.listRecord()
        }

        when (queryList) {
            is Result.Error -> {}
            is Result.Loading -> {}
            is Result.Success -> {
                val mydata = queryList.data //It cause error
            }
        }
    }
}


sealed class Result<out R> {
    data class Success<out T>(val data: T) : Result<T>()
    data class Error(val exception: Exception) : Result<Nothing>()
    object Loading : Result<Nothing>()
}


fun aa(): Result<Flow<List<MRecord>>> {
    return Result.Loading
}
Run Code Online (Sandbox Code Playgroud)

Ten*_*r04 5

将返回的属性值缓存在局部变量中,以便可以进行智能转换。它不能在没有局部变量的情况下进行智能转换,因为它是委托属性。

\n

您可以在声明中这样做when

\n
when (val result = queryList) {\n    is Result.Error -> {}\n    is Result.Loading -> {}\n    is Result.Success -> {\n        val mydata = result.data\n        // ..\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n