Size: a a a

2019 October 29

AN

Alexander Nozik in Kotlin Moscow
Суть заключается в том, что корутины по идее своей - это не совсем треды и или вернее совсем не треды. И сравнивать их не всегда вполне корректно.
источник

RI

Roman Ivanov in Kotlin Moscow
Юрий Николаев
Не кидайтесь тапками. Если абстрагироваться от понятия тредов и корутин, то мы имеет последовательность операций (слишком грубо называть потоком, согласен). Эта последовательность может быть прервана вызовом suspend функции (для вызова прерывания из функции она должна быть suspend). Естественно последовательность операций выполняется на потоке и получается что корутина - это слой абстракции над неким пулом (дефолтный размер = количеству 'ядер', доступных на машине). В момент прерывания этой последовательности происходит выггрузка стека корутины из потока и её сохранение в куче, после чего в поток загружается стек другой сопрограммы. Соответствующий байт-код генерируется компилятором Kotlin.
Тогда не очень понятно, почему они производительные. Если мы со стеком такие телодвижения проводим.
источник

AN

Alexander Nozik in Kotlin Moscow
Roman Ivanov
Тогда не очень понятно, почему они производительные. Если мы со стеком такие телодвижения проводим.
Это соверешенно не обязательно производительнее. Кто про это сказал?
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Roman Ivanov
Тогда не очень понятно, почему они производительные. Если мы со стеком такие телодвижения проводим.
Ну во первых гошечка как раз таки стеки копирует (как и loom планирует), во-вторых в корутинах нету стека, читай выше мое сообщение
источник

RI

Roman Ivanov in Kotlin Moscow
Roman Ivanov
Тогда не очень понятно, почему они производительные. Если мы со стеком такие телодвижения проводим.
в теме доклада второго написано так)
источник

ЮН

Юрий Николаев in Kotlin Moscow
За счет минимизации времени простоя (блокирующий IO и т.п.) системного потока можно поднять общую пропускную способность системы. И да, оно не быстрее, просто оптимизация утилизации ресурсов дает некий прирост в параллельных задачах
источник

RI

Roman Ivanov in Kotlin Moscow
Ruslan Ibragimov
Ну во первых гошечка как раз таки стеки копирует (как и loom планирует), во-вторых в корутинах нету стека, читай выше мое сообщение
Можно какую нибудь ссылочку поподробнее? Просто не в курсе что есть Стейт машина
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Roman Ivanov
Можно какую нибудь ссылочку поподробнее? Просто не в курсе что есть Стейт машина
Там старые корутины, но идея осталась https://www.slideshare.net/abreslav/jvmls-2016-coroutines-in-kotlin
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Вот тут вроде тоже правильные слова и картинки, но у Бреслава проще мне кажется объяснение https://labs.pedrofelix.org/guides/kotlin/coroutines/coroutines-and-state-machines
источник

RI

Ruslan Ibragimov in Kotlin Moscow
источник
2019 October 30

IK

Igor Kalishevsky in Kotlin Moscow
Привет всем.

Вопрос. Есть android Bundle, в котором могут лежать другие бандлы.
Мне нужно по ним пройтись, чтобы вытащить типы values.
То есть тип, образно будет такой: Map<String, String || Map<String, ??>>
Пока я написал такое: fun Bundle.toTypeMap(): Map<String, Any?> =.
Но хотелось бы записать тип явно. Всё что ниже не работает.

fun <T> sample(): Map<String, T>
   where T : Map<String, String>,
         T : Map<String, T> {

}


fun <T> sample2() where T : Map<String, T>, T: String{

}


Это принципиально возможно?
источник

IK

Igor Kalishevsky in Kotlin Moscow
Наверное непонятно написал. Смысл вопроса в том, что я хочу написать generic, который описывает value мапы так, чтобы он мог быть либо String, либо Map. Рекурсивно. То есть в коде ниже я не хочу писать Any?:

fun Bundle.toTypeMap(): Map<String, Any?> =
   keySet().map { key ->
       key!! to get(key).let {
           when (it) {
               is Bundle -> it.toTypeMap()
               null -> null
               else -> JSONObject.wrap(it::class.java.simpleName)
           }
       }
   }.toMap()
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Вопрос в том, можно ли как в Flow/Typescript написать:
typealias StringOrMap = String | Map<String, *>
Т.е. в наличии or для типов?
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
В Котлине такого нет, но с помощью делегатов можно умудриться сделать аналог. Если я правильно понял вопрос
источник

AN

Alexander Nozik in Kotlin Moscow
Сум типов в котлин нет, можно только через силед классы. Если надо оборачивать JS-ные байндинги, то можно оставить Any а потом чекать тип
источник

IK

Igor Kalishevsky in Kotlin Moscow
Ⓢⓔⓡⓖ
Вопрос в том, можно ли как в Flow/Typescript написать:
typealias StringOrMap = String | Map<String, *>
Т.е. в наличии or для типов?
Да, правильно понял. Спасибо
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
источник

СЗ

Сергей Закусов in Kotlin Moscow
Трансляция будет?
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Трансляция идет.
источник