Je veux corriger une erreur de compilateur de type incompatibilité que je reçois du code suivant, où l'inférence de type ne fait pas ce que je veux. J'ai une classe fermée et un flux de rxjava:Comment faire pour monter la valeur de retour d'un constructeur
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)
incompatibilité Type: Type inférée KFunction1 < @ParameterName Throwable, Result.Failure> mais la fonction! était attendu
Je peux corriger l'erreur en spécifiant explicitement le type de retour de la fonction de cartographe, qui est une sorte de transtypage ascendant du type inféré Result.Success
-Result
comme ceci:
logs.map({ logs ->
Result.Success(logs) as Result
})
Mais je me demandais si cela upcasting est possible avec une référence de fonction constructeur, quelque chose comme Result::Success as Result
Parfait, merci! – vlazzle