RxJava zipWith Ошибка IDE в Kotlin с использованием Android Studio 3.0

Я хочу создать Observable, который испускает некоторые элементы и Observable, содержащие список объектов с Interval Observable, так что элементы из первого наблюдаемого будут излучать с некоторой задержкой по времени. Вот моя реализация:

val just1 = ArrayList<SomeClass1>() 

заполнять некоторые предметы

 fun populateJust1() { just1.add(SomeClass1("23", 23)) just1.add(SomeClass1("24", 24)) just1.add(SomeClass1("25", 25)) } populateJust1() 

и zip с интервалом Observable

 Observable.fromIterable(just1) .zipWith(Observable.interval(2, TimeUnit.SECONDS)) { item: SomeClass1, interval: Long -> item } .subscribe(Consumer<SomeClass1> { someClass1 -> Log.v("someClass1", someClass1.toString()) }) 

Однако IDE, Android Studio 3.0 подчеркивает красный оператор zipWith и говорит:

Приведенные аргументы не могут быть вызваны ни одной из следующих функций. zipWith (((observer: Observer) → Unit) !, ((t1: SomeClass1, t2: Long) → R)!), где R не может быть выведено; U = Long для забавы zipWith (другое: ((наблюдатель: наблюдатель) → единица) !, молния: ((t1: SomeClass1, t2: U) → R)!): Наблюдаемый! определяется в io.reactivex.Observable zipWith (ObservableSource !, BiFunction!), где R не может быть выведено; U = Длинные! для забавы zipWith (другое: ObservableSource !, молния: BiFunction!): Наблюдаемый! определяемый в io.reactivex.Observable zipWith ((Mutable) Iterable !, BiFunction!), где U, R не может быть выведено для забавы zipWith (другое: (Mutable) Iterable !, zipper: BiFunction!): Наблюдаемый! определяемый в io.reactivex.Observable zipWith ((Mutable) Iterable !, ((t1: SomeClass1, t2: Long) → R)!), где R не может быть выведено; U = Длинные для забавы zipWith (другие: (Mutable) Iterable !, zipper: ((t1: SomeClass1, t2: U) → R)!): Наблюдаемый! определен в io.reactivex.Observable

Что не так? Я только что преобразовал этот код из класса Java, где все было правильно

Kotlin не может вывести типы в zipWith lambda.

Используйте BiFunction вместо лямбда:

 data class SomeClass(val a: String, val b: Int) val list = listOf(SomeClass("1", 1), SomeClass("2", 2)) Observable .fromIterable(list) .zipWith(Observable.interval(2, TimeUnit.SECONDS), BiFunction { item: SomeClass, _: Long -> item }) .subscribe { Log.v("someClass", it.toString())