gpt4 book ai didi

Observable.subscribe 上的 Kotlin 扩展函数不起作用

转载 作者:行者123 更新时间:2023-12-02 01:29:47 25 4
gpt4 key购买 nike

我正在尝试为 Observable.subscribe 编写一个自动记录错误的扩展函数。

fun <T> Observable<T>.subscribeAndLogE(onNext: Consumer<in T>): Disposable =
subscribe(onNext, ErrorConsumer())

ErrorConsumer 工作并可能记录错误,但是 subscribeAndLogE不接受像 .subscribe() 这样的 lambda确实如此。

observer.subscribe { 
//works
}

observer.subscribeAndLogE {
//does not work
}

它说:

error

OnboardingScreen 为任意值 T通常是这样。

我没有看到原文Consumer<in T>Observable做任何特殊的事情来接受 lambda。我在这里做错了什么?

最佳答案

您正在将 Consumer 类型的参数传递给函数。您需要传递一个函数才能使 lambda 语法发挥作用。这将按照您想要的方式工作:

fun <T> Observable<T>.subscribeAndLogE(onNext: (it : T) -> Unit): Disposable =
subscribe({ onNext(it) },{ throwable -> Log(throwable) })

并像这样使用它:

observer.subscribeAndLogE { 
//works
}

关于Observable<T>.subscribe 上的 Kotlin 扩展函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52587677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com