¿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) } 
  • RxKotlin collectInto () MutableList usando references de método
  • Obtiene N últimos objects emitidos por observables en RxJava2
  • RxAndroid, cómo detectar si observable ha finalizado la emisión
  • Usando RxJava para unir datos locales con datos remotos (o en caching)
  • ¿Expresar "súper" generics en los types funcionales de Kotlin?
  • Agregar subscribeOn () está cambiando el tipo de retorno de observable
  • ¿Cómo corotines de Kotlin son mejores que RxKotlin?
  • Rx-Kotlin awaitTerminalEvent nunca se sube a Completo
  • Excepción causada por: java.lang.ClassNotFoundException: org.reactivestreams.Publisher
  • ¿Cómo leer JSON desde Url usando kotlin Android?
  • La suscripción de rx kotlin no funciona, no recibe artículos