0
タイプ推論が私の望んでいない次のコードからタイプミスマッチコンパイラエラーを修正したいと思います。コンストラクタの返り値をアップキャストする方法
sealed class Result {
data class Success(val logs: List<Log>) : Result()
data class Failure(val throwable: Throwable) : Result()
object InFlight : Result()
}
val logs: Observable<List<Log>> = getLogs()
logs.map(Result::Success)
.onErrorReturn(Result::Failure)
型の不一致:推論タイプはKFunction1 < @ParameterNameたThrowable、Result.Failure>が、関数である私は、密封されたクラスとrxjavaストリームを持っています!
しかし、この場合、私は思っていた:私は、明示的にそうようlogs.map({ logs -> Result.Success(logs) as Result })
Result
に推論された型のResult.Success
からのアップキャストの一種であるマッパー関数の戻り値の型を指定することで、エラーを修正することができます
を期待されていましたアップキャストはコンストラクタ関数参照などで可能です。Result::Success as Result
完璧、ありがとうございます! – vlazzle