gpt4 book ai didi

rx-java - 我可以创建一个 Kotlin 扩展方法来将 rxJava 订阅添加到 CompositeSubscription 吗?

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

我一直在玩 Kotlin/RxJava,并尝试创建一个扩展方法来将 Subscription 添加到 CompositeSubscription,其工作方式如下:

search.subscribe {
//do stuff
}.addToComposite(compositeSubscription)

这是我目前的尝试:

fun Subscription.addToComposite(composite: CompositeSubscription) = { composite.add(this) }

它编译和运行没有错误,但似乎并没有真正将 Subscription 添加到 CompositeSubscription。我做错了什么吗?

最佳答案

您的函数定义不正确。比较:

fun f() { println("hello") }

此函数执行单个语句 println("hello") 并且是一个简单的 Unit-returning function (与 Java 中的 void 相同)。

fun g() = { println("hello") }

这个函数是一个single-expression function ,它只返回表达式
{ println("hello") } 的值,即 lambda expression . g 的返回类型是 () -> Unit它不执行 lambda 体!

这也是explained here .


要修复您的代码,您只需从函数声明中删除 =:

fun Subscription.addToComposite(composite: CompositeSubscription) { composite.add(this) }

关于rx-java - 我可以创建一个 Kotlin 扩展方法来将 rxJava 订阅添加到 CompositeSubscription 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35995630/

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