Size: a a a

Kotlin Community

2020 February 17

AR

Abai Rakhym in Kotlin Community
где ошибка
источник

Sergey λ in Kotlin Community
источник

AM

Andrew Mikhaylov in Kotlin Community
Какая ошибка? Компиляции, исключение, результат неправильный? Ежкин кот, неужели так трудно, приходя за помощью, нормально её попросить?
источник

AM

Andrew Mikhaylov in Kotlin Community
#Kotlin #CompilerPlugin #KotlinIR

Exploring Kotlin IR

Kotlin Intermediate Representation (IR) - это специальный формат, в который превращается весь Kotlin код, перед тем как будет скомпилирован в конечный код (JVM, JS или Native).

Возможно вы уже слышали про плагины Kotlin компилятор, которые дадут возможность менять IR и создать фреймворки и библиотеки невиданные раннее. Фактически плагины - это Java Annotation Processor на стеройдах и работающий за пределами JVM!

Так вот доступ к плагинам компилятора уже можно получить. Он не имеет документации и нестабилен, но уже давно используется командой Kotlin и сторонними разработчиками, о чем и идет речь в статье.
источник

VP

Vladimir Petrakovich in Kotlin Community
Вопрос по корутинам: есть ли встроенный способ запустить "фоновую" корутину, которая не будет мешать родительскому скоупу завершиться, а будет в такой ситуации отменяться? Что-то вроде потока-демона.
источник

RI

Ruslan Ibragimov in Kotlin Community
Vladimir Petrakovich
Вопрос по корутинам: есть ли встроенный способ запустить "фоновую" корутину, которая не будет мешать родительскому скоупу завершиться, а будет в такой ситуации отменяться? Что-то вроде потока-демона.
Обычный скоуп + cancel разве не то что ты описываешь? Возможно SupervisorJob то что тебе действительно нужно
источник

OY

Oleg Yukhnevich in Kotlin Community
Vladimir Petrakovich
Вопрос по корутинам: есть ли встроенный способ запустить "фоновую" корутину, которая не будет мешать родительскому скоупу завершиться, а будет в такой ситуации отменяться? Что-то вроде потока-демона.
То есть, что бы фоновая, если отменяется, не отменяла родительскую, но наоборот работало бы?
SupervisorJob?
источник

VP

Vladimir Petrakovich in Kotlin Community
Ruslan Ibragimov
Обычный скоуп + cancel разве не то что ты описываешь? Возможно SupervisorJob то что тебе действительно нужно
Да, обычный скоуп + cancel делает то, что нужно, но этот cancel надо делать руками
источник

VP

Vladimir Petrakovich in Kotlin Community
Oleg Yukhnevich
То есть, что бы фоновая, если отменяется, не отменяла родительскую, но наоборот работало бы?
SupervisorJob?
Чтобы при завершении родителя она отменялась, а не препятствовала окончанию завершения
источник

U

Unat in Kotlin Community
Только надо внимательно использовать cancel() - если скоуп ещё будет использоваться в будущем, то надо вызывать cancelChildren(), ибо обычный cancel() прикончит скоуп насовсем.
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Вопрос по корутинам: есть ли встроенный способ запустить "фоновую" корутину, которая не будет мешать родительскому скоупу завершиться, а будет в такой ситуации отменяться? Что-то вроде потока-демона.
GlobalScope вполне сгодится. Насчет того, чтобы "не препятствовала окончанию завершения" - это утечка корутины. Как раз то, чего пытаются избежать при помощи Structured Concurrency. Самое простое наверное сделать GlobalScope и руками прокинуть отмену.
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
GlobalScope вполне сгодится. Насчет того, чтобы "не препятствовала окончанию завершения" - это утечка корутины. Как раз то, чего пытаются избежать при помощи Structured Concurrency. Самое простое наверное сделать GlobalScope и руками прокинуть отмену.
Нет, я хочу не чтобы она утекала, а вела себя иначе при завершении родителя - сразу отменялась.
источник

VP

Vladimir Petrakovich in Kotlin Community
Structured Concurrency это нисколько не ломает
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Нет, я хочу не чтобы она утекала, а вела себя иначе при завершении родителя - сразу отменялась.
Понял, но это примерно то, что я говорил, ручками на родительский скоуп сделать completion handler.
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
Понял, но это примерно то, что я говорил, ручками на родительский скоуп сделать completion handler.
Да я могу просто в конце блока кода cancel делать)
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Да я могу просто в конце блока кода cancel делать)
Кстати еще лучше
источник

SB

Sergey Barmin in Kotlin Community
Подскажите, правильно ли я понимаю что http запрос к сервису завернутый в Rx Disposable при переходе к корутинам аналогичен Job'у в котором выполняется этот запрос?
источник

AN

Alexander Nozik in Kotlin Community
Sergey Barmin
Подскажите, правильно ли я понимаю что http запрос к сервису завернутый в Rx Disposable при переходе к корутинам аналогичен Job'у в котором выполняется этот запрос?
Если с результатом, то Deferred
источник

SB

Sergey Barmin in Kotlin Community
понял, спасибо
источник

AN

Alexander Nozik in Kotlin Community
Sergey Barmin
понял, спасибо
Ну и не совсем правильно говорить, что корутина выполняется в Job. Job - это скорее handler.
источник