Size: a a a

Kotlin Community

2020 June 28

LS

Lev Shagalov in Kotlin Community
Сорян, накопипастил. Поправил
https://pl.kotl.in/32uvZF62i
источник

LS

Lev Shagalov in Kotlin Community
Не понимаю я эти flow в упор...
источник

VP

Vladimir Petrakovich in Kotlin Community
Andrew Mikhaylov
Для того, чтобы висящие вне structured concurrency штуки были явно помечены как устаревшая апишка. По-моему, всё ок.
Так оно в рамках scope работает, с этим вроде всё ок
источник

AM

Andrew Mikhaylov in Kotlin Community
Vladimir Petrakovich
Так оно в рамках scope работает, с этим вроде всё ок
Акторы? Хм, значит я чёт напутал.

Нет, я помню, что есть планы ещё по типизированным акторам, но там о другом. Тогда не знаю, зачем деприкейтили :)
источник

II

Ivan Ivanov in Kotlin Community
Кто нибудь сталкивался с Mojo exception при компиляции maven в Линукс? Знаете как лечить?
источник

AL

Anton Lakotka in Kotlin Community
Lev Shagalov
Не понимаю я эти flow в упор...
В чем именно сложность?
Главное понимать как работают suspend функции и роль эмиттера и коллектора.
Что из этого не понятно?
источник

LS

Lev Shagalov in Kotlin Community
Anton Lakotka
В чем именно сложность?
Главное понимать как работают suspend функции и роль эмиттера и коллектора.
Что из этого не понятно?
suspend функции вроде понятно как работают. А эмиттер как я понял вызывается коллектором.
источник

AL

Anton Lakotka in Kotlin Community
Lev Shagalov
suspend функции вроде понятно как работают. А эмиттер как я понял вызывается коллектором.
да, коллектор всегда является инициатором.
понимая это можно дальше анализировать то каким образом происходит работа внутри flow. почему они холодные и почему, например, внутри эмиттера менять контекст нежелательно. поэтому разработчики сделали специальный оператор flowOn
источник

LS

Lev Shagalov in Kotlin Community
Хм... а почему контекст менять не желательно? Какая разница? Все равно суспенд же

Флоу выглядят как простые колбеки или сиквенс. Только завернуто удобно. Но где это использовать - разве что для чтения бд чтоли? Пока следующая запись идет ты уже посчитал предыдущую? Там ведь всегда подразумевается коллекция однотипных элементов.
источник

AL

Anton Lakotka in Kotlin Community
> а почему контекст менять не желательно?
У Романа есть статья на эту тему. Объяснять нет смысла здесь и там нужно понимать как флоу работают. Поэтому лучше начать с простых экспериментов. И почитать код по Flow, он несложный.

> Флоу выглядят как простые колбеки или сиквенс.
почему колбеки?

> Но где это использовать - разве что для чтения бд чтоли?
Много применений можно придумать. Это удобная штука для пайплайнов. Например до этого были каналы и ими было тяжело манипулировать. С flow всякие map, filter, reduce заходят на ура как и Sequence, но только с полной поддержкой корутин. т.е. они не блокирующие.


> Пока следующая запись идет ты уже посчитал предыдущую?
есть подозрение, что Вы что-то путаете. флоу сами по себе не про это. Ваш вопрос лежит в поле non-blocking IO. если речь про БД.

> Там ведь всегда подразумевается коллекция однотипных элементов.
Однотипных != одинаковых. т.е. через flow можно пропускать все что угодно, если есть нужда.

А для чего Вы хотели использовать flow?
источник

КР

Кирилл Романенко... in Kotlin Community
Anton Lakotka
> а почему контекст менять не желательно?
У Романа есть статья на эту тему. Объяснять нет смысла здесь и там нужно понимать как флоу работают. Поэтому лучше начать с простых экспериментов. И почитать код по Flow, он несложный.

> Флоу выглядят как простые колбеки или сиквенс.
почему колбеки?

> Но где это использовать - разве что для чтения бд чтоли?
Много применений можно придумать. Это удобная штука для пайплайнов. Например до этого были каналы и ими было тяжело манипулировать. С flow всякие map, filter, reduce заходят на ура как и Sequence, но только с полной поддержкой корутин. т.е. они не блокирующие.


> Пока следующая запись идет ты уже посчитал предыдущую?
есть подозрение, что Вы что-то путаете. флоу сами по себе не про это. Ваш вопрос лежит в поле non-blocking IO. если речь про БД.

> Там ведь всегда подразумевается коллекция однотипных элементов.
Однотипных != одинаковых. т.е. через flow можно пропускать все что угодно, если есть нужда.

А для чего Вы хотели использовать flow?
Чёт впервые слышу о негативных сторонах смены контекста. А можно ссылочку?
источник

LS

Lev Shagalov in Kotlin Community
Ну, я как понял, каналы выпилят, вот и пробую заранее перейти на флоу
источник

AL

Anton Lakotka in Kotlin Community
Кирилл Романенко
Чёт впервые слышу о негативных сторонах смены контекста. А можно ссылочку?
источник

AL

Anton Lakotka in Kotlin Community
Lev Shagalov
Ну, я как понял, каналы выпилят, вот и пробую заранее перейти на флоу
там вроде не сами каналы, а именно операторы. т.е. манипуляция над каналами будет выпилена.
источник

AL

Anton Lakotka in Kotlin Community
или я неправ?
источник

КР

Кирилл Романенко... in Kotlin Community
А. Я не прочитал оригинальное сообщение, поэтому подумал вообще не о том. Вопрос закрыт, спасибо.
источник

AL

Anton Lakotka in Kotlin Community
Lev Shagalov
Ну, я как понял, каналы выпилят, вот и пробую заранее перейти на флоу
https://github.com/Kotlin/kotlinx.coroutines/blob/version-1.3.4/kotlinx-coroutines-core/common/src/channels/Channels.common.kt#L1397
ну вот пример того, почему операторы над каналами не очень удобны.
Каждый оператор -- создает новую корутину. в данном случае еще через GlobalScope.
источник

LS

Lev Shagalov in Kotlin Community
Anton Lakotka
> а почему контекст менять не желательно?
У Романа есть статья на эту тему. Объяснять нет смысла здесь и там нужно понимать как флоу работают. Поэтому лучше начать с простых экспериментов. И почитать код по Flow, он несложный.

> Флоу выглядят как простые колбеки или сиквенс.
почему колбеки?

> Но где это использовать - разве что для чтения бд чтоли?
Много применений можно придумать. Это удобная штука для пайплайнов. Например до этого были каналы и ими было тяжело манипулировать. С flow всякие map, filter, reduce заходят на ура как и Sequence, но только с полной поддержкой корутин. т.е. они не блокирующие.


> Пока следующая запись идет ты уже посчитал предыдущую?
есть подозрение, что Вы что-то путаете. флоу сами по себе не про это. Ваш вопрос лежит в поле non-blocking IO. если речь про БД.

> Там ведь всегда подразумевается коллекция однотипных элементов.
Однотипных != одинаковых. т.е. через flow можно пропускать все что угодно, если есть нужда.

А для чего Вы хотели использовать flow?
Флоу сильно отличаются от сиквенсов? Ну, за исключением блокирования.
источник

AL

Anton Lakotka in Kotlin Community
смотря с какой стороны смотреть
источник

AL

Anton Lakotka in Kotlin Community
с точки зрения клиентского кода, выглядят почти одинаково
источник