¿Puedo crear un método de extensión Kotlin para agregar una suscripción rxJava a una suscripción compuesta?

Estuve jugando con Kotlin / RxJava y traté de crear un método de extensión para agregar una Suscripción a una suscripción compuesta, que funcionaría así:

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

Este es mi bash hasta ahora:

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

Se comstack y se ejecuta sin errores, pero no parece agregar realmente la Suscripción a la Suscripción compuesta. ¿Estoy haciendo algo mal?

Su function está definida incorrectamente. Comparar:

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

Esta function ejecuta la instrucción single println("hello") y es una function simple de recuperación de Unit (lo mismo que void en Java).

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

Esta function es una function de expresión única , solo devuelve el valor de expresión
{ println("hello") } , que es una expresión lambda . El tipo de retorno de g es () -> Unit , ¡ y no ejecuta el cuerpo lambda!

Esto también se explica aquí .


Para arreglar su código, simplemente puede eliminar = de su statement de function:

 fun Subscription.addToComposite(composite: CompositeSubscription) { composite.add(this) } 
  • ¿Cómo puedo agregar de manera condicional una operación asincrónica en medio de una transmisión de RxJava?
  • Llamada asincrónica para cada elemento dentro de una colección
  • Cómo comprimir algunos observables en lenguaje Kotlin con RxAndroid
  • RxKotlin - Single.just () no se emite al suscribirse TestSubscriber
  • No se puede 'observar en' hilo principal con RxKotlin
  • OnComplete nunca se llamó con toSortedList () y groupBy ()
  • cómo implementar Switch usando Data binding en android
  • ¿Cómo especificar la versión de RxJava al usar RxKotlin?
  • Cómo notificar a Observable cuando finalice CountdownTimer
  • Excepción causada por: java.lang.ClassNotFoundException: org.reactivestreams.Publisher
  • Múltiples requestes de modificación2 usando Flowable en Kotlin