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) } 
  • Cómo llenar una vista de list usando Kotlin, retroadaptación y RXjava
  • ¿Cómo crear caching / versión caliente de rx.Single?
  • ¿Alguna diferencia entre "Subject.asObservable ()" y el tema en sí "Subject"?
  • Rx Java Retrofit con flatMap se ejecuta solo una vez
  • RX java / Android cómo lograr este brindis en cada clic usando el operador de rebote
  • Cambios en el valor de ObservableField no propagados
  • Escuchar posts y escribir commands en un flujo observable
  • Pausa / Reanudar un timer / retraso en RX
  • Convirtiendo un Observable en un Flujo con contrapresión en RxJava2
  • ¿Expresar "súper" generics en los types funcionales de Kotlin?
  • RxJava manejador de error pnetworkingeterminado