Size: a a a

2020 May 26

AD

Aleksey D. in KotlinLangRu
Quantum Harmonizer
да с чего бы? object — и экземпляр, и тип.
да, но отчетливо помню, что у меня это не получалось (возможно, это я дураком был)
источник

QH

Quantum Harmonizer in KotlinLangRu
Aleksey D.
а можно носом ткнуть в пример такой функции? что-то не вышло провести аналогию с встроенными функциями
inline fun <R> Folk.fold(
   ifGuy: (Guy) -> R,
   ifGal: (Gal) -> R
): R = when (this) {
   is Guy -> ifGuy(this)
   is Gal -> ifGal(this)
}
источник

AD

Aleksey D. in KotlinLangRu
Quantum Harmonizer
inline fun <R> Folk.fold(
   ifGuy: (Guy) -> R,
   ifGal: (Gal) -> R
): R = when (this) {
   is Guy -> ifGuy(this)
   is Gal -> ifGal(this)
}
а в чем профит? просто скрыть when под функцией?
источник

QH

Quantum Harmonizer in KotlinLangRu
Aleksey D.
а в чем профит? просто скрыть when под функцией?
да, в т. ч. спрятать неконсистентность между классами и обджектами
источник

AD

Aleksey D. in KotlinLangRu
Quantum Harmonizer
да, в т. ч. спрятать неконсистентность между классами и обджектами
хм, попробую, спасибо
источник

IK

Iliya Kuznetsov in KotlinLangRu
касательно пула тредов корутин, я правильно понимаю для IO есть отдельный пул а для вычислений надо другой использовать?
источник

IK

Iliya Kuznetsov in KotlinLangRu
и чтобы вместе было примерно как количество ядер?
источник

IK

Iliya Kuznetsov in KotlinLangRu
Dispatchers.IO этот вот для IO надо ?
источник

QH

Quantum Harmonizer in KotlinLangRu
логично, правда?)
источник

QH

Quantum Harmonizer in KotlinLangRu
там на практике всё чуть сложнее — IO может использовать CommonPool
источник

IK

Iliya Kuznetsov in KotlinLangRu
это какие-то системные пропертя надо конфигурировать или оно само по умолчанию вычисляет сколько куда?
что в коде надо использовать нужный шедулер для нужных кусков кода и вычисления как-то suspension point размечать (чтобы они могли прерываться) я примерно понял
источник

IK

Iliya Kuznetsov in KotlinLangRu
более насущный вопрос -- как из suspend-функций вызывать чужие библиотеки которые идея считает блокирующими вызовами? статью Елизарова на Медиуме прочитал но у меня не удалось побороть варнинги идеи, значит в понимании проблема
источник

IK

Iliya Kuznetsov in KotlinLangRu
suspend fun participantListCommand(): ParticipantListResponse {
   val resp = client.post<HttpResponse>(url=someUrl){body = someXml}

   XmlMapper().readValue(resp.readText(), ...) <-- Inappropriate blocking method call

}
источник

IK

Iliya Kuznetsov in KotlinLangRu
пробовал обернуть вызов XmlMapper().readValue  в withContext(Dispatchers.IO) {..} но по-прежнему идея ругается
источник

BP

Bogdan Panchenko in KotlinLangRu
Iliya Kuznetsov
касательно пула тредов корутин, я правильно понимаю для IO есть отдельный пул а для вычислений надо другой использовать?
Нет, он использует общий пулл, в данной реализации. Они выделяются постепенно для IO. При блокировке треда в IO, default не пострадает
источник

BP

Bogdan Panchenko in KotlinLangRu
Iliya Kuznetsov
это какие-то системные пропертя надо конфигурировать или оно само по умолчанию вычисляет сколько куда?
что в коде надо использовать нужный шедулер для нужных кусков кода и вычисления как-то suspension point размечать (чтобы они могли прерываться) я примерно понял
Нет не нужно default = count kernels. Для ио вроде около 30
источник

BP

Bogdan Panchenko in KotlinLangRu
Iliya Kuznetsov
пробовал обернуть вызов XmlMapper().readValue  в withContext(Dispatchers.IO) {..} но по-прежнему идея ругается
Ну пока не понятно (покоду) может баг
источник

IK

Iliya Kuznetsov in KotlinLangRu
Bogdan Panchenko
Ну пока не понятно (покоду) может баг
это библиотека com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.0. Спасибо за пояснения!
источник

IK

Iliya Kuznetsov in KotlinLangRu
может ли быть дело что XmlMapper().readValue кидает java.io.IOException ?
источник

BP

Bogdan Panchenko in KotlinLangRu
Iliya Kuznetsov
может ли быть дело что XmlMapper().readValue кидает java.io.IOException ?
Ну текс ворнинга что говорит. Может, есть runCatching
источник