Size: a a a

Kotlin Community

2020 March 05

LS

Lev Shagalov in Kotlin Community
Alexander Nozik
а при чем тут сериализация?
А чтоб я знал...
источник

LS

Lev Shagalov in Kotlin Community
Это вообще нормальный код? Может экстеншн ко всему не стоит делать и компилятор не верно на это реагирует?
источник

BP

Bogdan Panchenko in Kotlin Community
Lev Shagalov
Компилятор странно ругается на сериализацию после добавления

fun <T> T.wrapList() = listOf(this)
fun <T> T.wrapSet() = setOf(this)
inline fun <reified T> T.wrapArray() = arrayOf(this)
Ругань можно показать ? Так то мы тут не телепаты, не сочтите за то грубость
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Это вообще нормальный код? Может экстеншн ко всему не стоит делать и компилятор не верно на это реагирует?
нормально все. Подозреваю, что просто перекомпилировать надо
источник

AN

Alexander Nozik in Kotlin Community
Там может быть проблема с выводом типов где-то
источник

BP

Bogdan Panchenko in Kotlin Community
Lev Shagalov
Это вообще нормальный код? Может экстеншн ко всему не стоит делать и компилятор не верно на это реагирует?
Ну вполне нормально, так делает config4k
источник

AF

Alex F. in Kotlin Community
Alexander Nozik
обновление компаратора - это перерасчет. Предлагаю складывать все в массив, а потом сделать вот так:

val data: List
val sortedData: List get() = data.sorted(comparator)

Оно будет пересчитываться на запрос. Иначе надо возиться с инвалидацией
то есть в collect я получаю неостортированные данные, затем мне надо создать еще одну корутину, чтобы отсортировать их не на UI и вернуть уже отсортированные данные?
источник

AN

Alexander Nozik in Kotlin Community
Alex F.
то есть в collect я получаю неостортированные данные, затем мне надо создать еще одну корутину, чтобы отсортировать их не на UI и вернуть уже отсортированные данные?
Зачем еще одну корутину? Оно уже все в ланче, который на дефолте
источник

BP

Bogdan Panchenko in Kotlin Community
Alex F.
то есть в collect я получаю неостортированные данные, затем мне надо создать еще одну корутину, чтобы отсортировать их не на UI и вернуть уже отсортированные данные?
А зачем создавать корунтину если это все синхронная работа ?
источник

BP

Bogdan Panchenko in Kotlin Community
Alexander Nozik
Зачем еще одну корутину? Оно уже все в ланче, который на дефолте
+
источник

AF

Alex F. in Kotlin Community
Alexander Nozik
Зачем еще одну корутину? Оно уже все в ланче, который на дефолте
ланч на Main. Мне отсортированные данные для UI нужны
источник

LS

Lev Shagalov in Kotlin Community
А чем будет отличаться вот такое?
fun <T: Any> T.wrapList() = listOf(this)
источник

BP

Bogdan Panchenko in Kotlin Community
Lev Shagalov
А чем будет отличаться вот такое?
fun <T: Any> T.wrapList() = listOf(this)
Нулы нельзя засунуть
источник

AN

Alexander Nozik in Kotlin Community
Alex F.
ланч на Main. Мне отсортированные данные для UI нужны
val sorted = TreeSet()
withContext(Default){
 flow.collect{
   sorted.add(it)
 }
}

sendToUI(sorted)
источник

BP

Bogdan Panchenko in Kotlin Community
Alex F.
ланч на Main. Мне отсортированные данные для UI нужны
Ну так работа на на не Майн потоке, потом переключаешься в ui
источник

BP

Bogdan Panchenko in Kotlin Community
В любом саспенде можно сменить диспачер
источник

BP

Bogdan Panchenko in Kotlin Community
Alexander Nozik
val sorted = TreeSet()
withContext(Default){
 flow.collect{
   sorted.add(it)
 }
}

sendToUI(sorted)
+
источник

AN

Alexander Nozik in Kotlin Community
В общем, в телеграме очень неудобно писать, но смысл в том, что делаете всю работу на дефолте, включая сортировку, а потом просто выходите из контекста или делаете withContext(Main)
источник

AN

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

BP

Bogdan Panchenko in Kotlin Community
Alexander Nozik
В общем, в телеграме очень неудобно писать, но смысл в том, что делаете всю работу на дефолте, включая сортировку, а потом просто выходите из контекста или делаете withContext(Main)
Для ui свои обычно, тут нужно уточнить что за юай
источник