Intereting Posts
свойство lateinit не было инициализировано Как сделать аргумент по умолчанию? Повторная установка 2, Rx 2 и асинхронные вызовы Kotlin: ArrayIndexOutOfBoundsException при преобразовании DispatchTask в строку Каков тип setContentView () Observer onChanged никогда не вызывал URL не загружается, особенно в устройстве samsung Смарт-литье в «Тип» невозможно, потому что «переменная» является изменчивым свойством, которое к этому моменту могло быть изменено Поддержка Lost Kotlin в Intellij Idea 14.1 Как добавить репозиторий maven по URL-адресу, используя kotlinscript DSL (build.gradle.kts) Не удалось определить классы конфигурации по умолчанию для тестового класса с помощью Kotlin и @AutoConfigureMockMvc Как вернуть интерфейс, например, javawith Kotlin Котлин ждет, пока функция не закончится В чем причина twitter4j.StreamListner IllegalAccessError в Котлине? Авторизация Spotify Code отклоняется за плохие учетные данные, несмотря на то, что отправлен действительный токен

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())