Kotlin – ¿Cómo crear una function de alias de RxJava flatmap ()?

Intenté crear una function de alias para Flowable.flatmap() como sigue, pero error de compilation.

 fun <T, R> Flowable<T>.then(mapper: Function<T, Publisher<R>>): Flowable<R> { return flatMap(mapper) } 

El error es: Un tipo de argumento esperado para la interfaz Function<out R> definida en kotlin

¿Tienes alguna idea? ¡Gracias!

El flatMap toma una function java.util.function.Function , el verdadero error es que no importó la function java.util.function.Function en su file Kotlin, pero no sugiero que use las funciones java-8 porque puede Aproveche las conversiones de SAM para usar la lambda directamente desde el código de Kotlin que definió con la interfaz funcional java-8 como tipo de parámetro.

Debe replace la Function con la Function1 , ya que la interfaz de Function es solo una interfaz de marcador Kotlin. por ejemplo:

 // v--- use the `Function1<T,R>` here fun <T, R> Flowable<T>.then(mapper: Function1<T, Publisher<R>>): Flowable<R> { return flatMap(mapper) } 

O utilice el tipo de function de Kotlin como se indica a continuación, por ejemplo:

 // v--- use the Kotlin function type here fun <T, R> Flowable<T>.then(mapper: (T) -> Publisher<R>): Flowable<R> { return flatMap(mapper) } 
  • Error de compilation de error de coincidencia de tipo Kotlin: Requiere éxito <T>, Encontrado MyError
  • RxJava: anular la suscripción asincrónica observable desde dentro de otra producción asincrónica
  • Android JUnit testing bloques indefinidamente cuando observó Observable en AndroidSchedulers.mainThread ()
  • Solo la primera testing pasa con TestScheduler cuando se ejecutan varias testings (Kotlin)
  • La subclass de class sellada de Kotlin debe convertirse a la class base si se proporciona como RxJava Observable
  • Convirtiendo un Observable en un Flujo con contrapresión en RxJava2
  • Observable.combineLa causa de error más reciente después de actualizar a RxJava 2.xx - no se puede inferir el tipo
  • RxJava cómo agrupar elementos de una list en Map <Key, List <Value >>
  • Ventana cornetworkingera RxJava
  • RxJava2 observable no procesando en Siguiente cuando hay un cambio
  • No se llama a ninguno de los suscriptores de RxJava onNext / onError / onComplete al encadenar Observables creado desde Observable.create ()