iex
01/27/2020, 1:21 PMfun foo(): Observable<Result<String, String>> =
Observable.just(Success(""))
.onErrorResumeNext { t: Throwable -> Failure("") } // Type mismatch: inferred type is Observable<Result.Success<String>!>! but Observable<Result<String, String>> was expected
// where:
sealed class Result<out T, out E> {
data class Success<out T>(val success: T) : Result<T, Nothing>()
data class Failure<out E>(val error: E) : Result<Nothing, E>()
}
diesieben07
01/27/2020, 1:25 PMObservable.just(Success(""))
is inferred to be of type Observable<Result.Success<String>>
. Your onErrorResumeNext
then tries to put a Result.Failure<String>
into that, which is not compatible.diesieben07
01/27/2020, 1:26 PMjust
or create factory methods for Success
and Failure
which return Result<T, E>
instead of Result.Success
/ Result.Failure
iex
01/27/2020, 1:30 PMfun foo(): Observable<Result<String, String>> =
Observable.just<Result<String, String>>(Success(""))
.onErrorResumeNext { t: Throwable -> Failure("") }
I get a new error on Failure("")
Expected type mismatch: inferred type is Result.Failure<String> but ObservableSource<out Result<String, String>!>! was expected
🤔iex
01/27/2020, 1:30 PMResult<String, String>
?diesieben07
01/27/2020, 1:31 PMonErrorResumeNext
expects an observable again, not a plain valuediesieben07
01/27/2020, 1:32 PMonErrorReturn
insteaddiesieben07
01/27/2020, 1:32 PMiex
01/27/2020, 1:33 PM