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) } 
  • Manejo de tipo anulable en RxJava con Kotlin
  • RxJava2 cómo separar diferentes implementaciones de emisor observable
  • Transformaciones de datos con RxJava en Kotlin
  • kotlin grpc.StreamObserver para deletar en rx.PublishSubject
  • Cómo consultar Realm en el background Subprocess usando RxJava2
  • ¿Por qué tengo un Log de salida no deseado al fusionar 2 observables en otro Observable, que los almacena temporalmente cada 10 segundos?
  • RxJava Debounce onNext ()
  • Solo la primera testing pasa con TestScheduler cuando se ejecutan varias testings (Kotlin)
  • Llamar a un RxJava Single In Kotlin Lambda
  • RxKotlin: tratando de agregar errores personalizados capturando
  • Fusionar datos de diferentes Observables y elegir diferentes estrategias de búsqueda, según la disponibilidad de datos