Я пытаюсь портировать библиотеку RxJava и использовать функции расширения в Kotlin.
fun <T,R: MutableCollection<T>> Observable<T>.collectWhile(factory: (() -> R), condition: (R,T) -> Boolean) =
compose(Transformers.collectWhile(factory,condition))
Transformers.collectWhile()
написан на Java и имеет следующую подпись:
public static <T, R extends Collection<T>> Transformer<T, R> collectWhile(final Func0<R> factory,
final Action2<? super R, ? super T> collect)
Однако у меня возникает проблема с отображением аргумента collect
, и я не очень хорошо разбираюсь в дженериках. Как мне выразить super
с функциональным типом?
ОБНОВЛЕНИЕ
Глупая ошибка с моей стороны. Я не должен был публиковать ТАК поздно ночью.
Я на самом деле ориентировался на это
public static <T, R extends Iterable<?>> Transformer<T, R> collectWhile(final Func0<R> factory,
final Action2<? super R, ? super T> collect, final Func2<? super R, ? super T, Boolean> condition)
И это то, что я должен был сделать.
fun <T,R: MutableCollection<T>> Observable<T>.collectWhile(factory: (() -> R), action: (R,T) -> Unit, condition: (R,T) -> Boolean) =
compose(Transformers.collectWhile(factory,action,condition))