Kotlin – 如何创建RxJava flatmap()的别名函数?
我试图创建一个别名函数Flowable.flatmap()
如下,但编译错误。
fun Flowable.then(mapper: Function<T, Publisher>): Flowable { return flatMap(mapper) }
错误是: 在kotlin中定义的接口Function
有一个types参数
有什么想法? 谢谢!
flatMap
需要一个java.util.function.Function
,实际的错误是你没有在你的Kotlin文件中导入java.util.function.Function
,但是我不建议你使用java-8的function,因为你可以没有利用SAM转换来直接使用java-8函数接口定义的Kotlin代码中的lambda作为参数types。
您应该将Function
替换为Function1
,因为Function
接口只是一个Kotlin 标记接口 。 例如:
// v--- use the `Function1` here fun Flowable.then(mapper: Function1>): Flowable { return flatMap(mapper) }
或者使用下面的Kotlin 函数types ,例如:
// v--- use the Kotlin function type here fun Flowable.then(mapper: (T) -> Publisher): Flowable { return flatMap(mapper) }