我尝试为Flowable.flatmap()
创建一个别名函数,如下所示,但编译错误。
fun <T, R> Flowable<T>.then(mapper: Function<T, Publisher<R>>): Flowable<R> {
return flatMap(mapper)
}
错误是: kotlin中定义的接口Function<out R>
需要一个类型参数
有什么想法吗?谢谢!
答案 0 :(得分:1)
- (instancetype)initWithFrame:(CGRect)frame titles:(NSArray *)titles {
self = [super initWithFrame:frame];
if (!self) {
return nil;
}
// ultimate goal is to set AYStepperView's currentSection
// the following also prints 0
NSLog(@"%lu", _currentSection);
return self;
}
需要flatMap
,实际错误是您没有在Kotlin文件中导入java.util.function.Function
,但我不建议您使用java-8函数,因为你不能利用SAM Conversions直接从Kotlin代码中使用lambda,该代码用java-8函数接口定义为参数类型。
您应该将java.util.function.Function
替换为Function
,因为Function1
界面只是Kotlin marker interface。例如:
Function
或使用如下的Kotlin function type,例如:
// v--- use the `Function1<T,R>` here
fun <T, R> Flowable<T>.then(mapper: Function1<T, Publisher<R>>): Flowable<R> {
return flatMap(mapper)
}