K Merle
08/12/2021, 12:46 PMwhen (result) {
Result.Loading -> {}
is Result.Success -> SomeScreen(data= (dataResult as Result.Success<List<SomeData>>).value)
is Result.Error -> {}
}
How do I prevent casting type on Success?
My Result class
sealed class Result<out T> {
object Loading : Result<Nothing>()
data class Error(val message: String) : Result<Nothing>()
data class Success<T>(val value: T) : Result<T>()
}
Ivan Pavlov
08/12/2021, 12:57 PMresult
variable has type Result<List<SomeData>>
it works as you expect
https://pl.kotl.in/FK3qHAXQDK Merle
08/12/2021, 12:59 PMSmart cast to 'Result.Success<List<SomeData>>' is impossible, because 'result' is a property that has open or custom getter
I am using flow from ViewModel to get the state in compose.Ivan Pavlov
08/12/2021, 1:01 PMval resultLocal = result
when(resultLocal) {
//use resultLocal
}
K Merle
08/12/2021, 1:02 PMIvan Pavlov
08/12/2021, 1:05 PMK Merle
08/12/2021, 1:09 PMmcpiroman
08/12/2021, 4:08 PMwhen(val resultLocal = result) {
//use resultLocal
}
iamthevoid
08/13/2021, 7:05 AMresult
in when
parentheses, but when you cast - you cast dataResult
iamthevoid
08/13/2021, 7:06 AMwhen
parentheses contentK Merle
08/13/2021, 7:06 AMK Merle
08/13/2021, 7:06 AMiamthevoid
08/13/2021, 7:08 AMwhen
cases as Result.Loading -> {}
also as is Result.Loading -> {}
. In first case works equals
, in second instanceof
. First case only possible for object
classes