如何上传一个构造函数的返回值
我想解决一个类型不匹配的编译器错误,我从下面的代码,其中类型推断没有做我想要的。 我有一个密封的类和一个rxjava流:
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>但函数! 预计
我可以通过显式指定映射器函数返回类型来修复错误,这种类型是从推断的Result.Success
类型的Result.Success
类中的Result.Success
,如:
logs.map({ logs -> Result.Success(logs) as Result })
但是我想知道这个上传是否可以用一个构造函数引用,例如Result::Success as Result
问题是在推断的类型。 因为logs.map(Result::Success)
推断了类型Success
而不是Result
。 比.onErrorReturn(Result::Failure)
失败,因为它是一个Failure
类型。
你可以改变它
logs.map<Result>(Result::Success) .onErrorReturn(Result::Failure)
<Result>
使类型显式化。