Size: a a a

Kotlin Community

2019 December 03

(

( in Kotlin Community
Для контекста - onErrorReturn имеет сигнатуру примерно
fun <R> Single<R>.onErrorReturn(f: (Throwable) -> R): Single<R>
источник

AN

Alexander Nozik in Kotlin Community
(
Окей, объясните пожалуйста это я кукухой поехал или почему он от меня здесь требует Nothing вернуть?
потому что тип явно не прописан, а он вывести не может
источник

AN

Alexander Nozik in Kotlin Community
сделайте переменную с явным типом и присвойте своему when-у
источник

(

( in Kotlin Community
Alexander Nozik
потому что тип явно не прописан, а он вывести не может
да нет, тип он правильно выводит
источник

(

( in Kotlin Community
а нет, вру, он выводит Single<out Root>
источник

(

( in Kotlin Community
гениально
источник

AN

Alexander Nozik in Kotlin Community
он выводит Nothing потому что предка общего не находит
источник

AT

Alexey Tkachenko in Kotlin Community
а почему он не находит общего предка?
источник

(

( in Kotlin Community
если бы он не мог найти общего предка, он бы вывел Any
источник

(

( in Kotlin Community
но он вывел out Root
всё, очевидно, начинает работать если убрать проекцию, но всё равно не очень приятно, потому что раньше такого вроде не было
источник

AN

Alexander Nozik in Kotlin Community
Alexey Tkachenko
а почему он не находит общего предка?
Потому что у вас там силед класс, еще и завернутый. Слишком сложная конструкция
источник

AN

Alexander Nozik in Kotlin Community
(
но он вывел out Root
всё, очевидно, начинает работать если убрать проекцию, но всё равно не очень приятно, потому что раньше такого вроде не было
Ну так правильно же. Работает, если Single убрать
источник

AT

Alexey Tkachenko in Kotlin Community
значит, надо явно привести к Single<Root>
источник

I

Ilmir in Kotlin Community
(
но он вывел out Root
всё, очевидно, начинает работать если убрать проекцию, но всё равно не очень приятно, потому что раньше такого вроде не было
Добро пожаловать в багтрекер!
источник

(

( in Kotlin Community
короче, у меня вопрос, почему он выводит Single<out Root>, а не Single<Root>, что имхо было бы логичнее и до этого вроде так и работало
источник

AN

Alexander Nozik in Kotlin Community
(
короче, у меня вопрос, почему он выводит Single<out Root>, а не Single<Root>, что имхо было бы логичнее и до этого вроде так и работало
вопрос в том, что сидит в just
источник

ТБ

Тимур Бухараев in Kotlin Community
(
Окей, объясните пожалуйста это я кукухой поехал или почему он от меня здесь требует Nothing вернуть?
А можете запостить минимальный пример, где есть определение Single и onErrorReturn?
источник

(

( in Kotlin Community
Я полазал по исходникам и позаменял Рх на котлиновские билтины и скорее всего это дырявый интероп (опять)
Вот минимальный пример без зависимостей, на котором воспроизводится:
sealed class Root {
   object A : Root()
   object B : Root()
}

fun sss() {
   when {
       "fff".contains("s") -> arrayListOf(Root.A)
       else -> arrayListOf(Root.B)
   }
}
источник

(

( in Kotlin Community
из when выводится out Root, если заменить на listOf выведется Root
источник

AN

Alexander Nozik in Kotlin Community
(
из when выводится out Root, если заменить на listOf выведется Root
сигнатура вроде одинаковая...
источник