Size: a a a

Kotlin Community

2020 December 17

AL

Anton Lakotka in Kotlin Community
Danil Shvets
Народ, скажите пожалуйста, сколько уйдёт на изучение Котлина, при условии что я знаю Java core. И тратить на Котлин по 2-3 часа в сутки???
это же все сильно индивидуально.
и зависит от степени изучения.

с синтаксисом можно ознакомиться за два вечера. и после этого уже спокойно писать и понимать
источник

VP

Vladimir Petrakovich in Kotlin Community
Danil Shvets
Народ, скажите пожалуйста, сколько уйдёт на изучение Котлина, при условии что я знаю Java core. И тратить на Котлин по 2-3 часа в сутки???
Недели должно хватить
источник

I

Igor in Kotlin Community
Vladimir Petrakovich
Недели должно хватить
лет 5 учу… и вон, в элементарных вопросах сегодня запутался…
источник

VP

Vladimir Petrakovich in Kotlin Community
Igor
лет 5 учу… и вон, в элементарных вопросах сегодня запутался…
Ну видимо у вас что-то не так с методикой
источник

I

Igor in Kotlin Community
Vladimir Petrakovich
Ну видимо у вас что-то не так с методикой
ну или так…
источник

モリモト in Kotlin Community
Ребят привет
Я недавно решил в котлин перекатиться, очень уж понравился синтаксис.
Хотел бы узнать о нем кое что:
- Разработка чего на котлине наиболее востребована( полагаю что приложения на андроид )
- Делают ли на нем бэкэнд и насколько это часто встречается
- Какие фремворки/либы маст хэв
- Есть ли смысл знать только котлин( принцип работы jvm не в счет ) или стоит еще подучить еще и яву


Тем кто решит ответить заранее спасибо за ваш ответ
источник

AN

Alexander Nozik in Kotlin Community
Igor
лет 5 учу… и вон, в элементарных вопросах сегодня запутался…
Именно котлин? 5 лет? Два года до релиза? Вообще инженерные дисциплины бесполезно "учить", надо делать.
источник

AN

Alexander Nozik in Kotlin Community
モリモト
Ребят привет
Я недавно решил в котлин перекатиться, очень уж понравился синтаксис.
Хотел бы узнать о нем кое что:
- Разработка чего на котлине наиболее востребована( полагаю что приложения на андроид )
- Делают ли на нем бэкэнд и насколько это часто встречается
- Какие фремворки/либы маст хэв
- Есть ли смысл знать только котлин( принцип работы jvm не в счет ) или стоит еще подучить еще и яву


Тем кто решит ответить заранее спасибо за ваш ответ
На часть вопросов ответ по ссылке в описание чата. в остальном держите от щедрот твиттера: https://twitter.com/kotlin/status/1329082378099146757?s=20
источник

I

Igor in Kotlin Community
Alexander Nozik
Именно котлин? 5 лет? Два года до релиза? Вообще инженерные дисциплины бесполезно "учить", надо делать.
ну не за два года, где-то за полгода до релиза…
Ща, глянул, так и есть… Котлин релизнули в феврале 16-го, а я начал на него смотреть осенью 15-го, сразу после релиза Swift2
источник

AN

Alexander Nozik in Kotlin Community
Igor
ну не за два года, где-то за полгода до релиза…
Ща, глянул, так и есть… Котлин релизнули в феврале 16-го, а я начал на него смотреть осенью 15-го, сразу после релиза Swift2
Ну значит, действительно речь о смотрении, а не об освоении. Надо писать что-то, тогда все будет ОК. Вопрос про ExceptionHandler совсем не тривиальный если что
источник

I

Igor in Kotlin Community
Alexander Nozik
Ну значит, действительно речь о смотрении, а не об освоении. Надо писать что-то, тогда все будет ОК. Вопрос про ExceptionHandler совсем не тривиальный если что
Ну я кстати, так и не разобрался, как с контекста корутины передать ExceptionHandler в новый скоуп.
источник

AN

Alexander Nozik in Kotlin Community
Он часть контекста, должен наследоваться. А вот когда он выстреливает, и я без доки не соображу
источник

AL

Anton Lakotka in Kotlin Community
да, вроде должен наследоваться
источник

VP

Vladimir Petrakovich in Kotlin Community
Igor
Ну я кстати, так и не разобрался, как с контекста корутины передать ExceptionHandler в новый скоуп.
Как и любой другой элемент - вытащить из текущего контекста и добавить к новому
источник

I

Igor in Kotlin Community
Anton Lakotka
да, вроде должен наследоваться
вот тут у меня и вышел завтык, либо получаю тот-же скоуп, и delay останавливает обе корутины, либо handler не подхватывает экспешн
источник

I

Igor in Kotlin Community
Vladimir Petrakovich
Как и любой другой элемент - вытащить из текущего контекста и добавить к новому
а можно пример? вот чтобы взять создать скоупБ с хэндлером от скоупА.
хочу доразбираться в вопросе
источник
2020 December 18

I

Igor in Kotlin Community
И можно еще вопрос, есть такой пример:

val scope = CoroutineScope(SupervisorJob())
val scope2 = CoroutineScope(SupervisorJob()) //Different Dispatcher

suspend fun criticalSectionSuspending(): String {
  println("Starting!")
    val scope3 = CoroutineScope( coroutineContext)
    val someJob = scope3.launch {
           delay(200)
                   println("Delay!")
           }
   return "Result"
}
fun main() {
 scope.launch {
   val res =  scope2.async{criticalSectionSuspending()}.await()
     println(res)
 }
 Thread.sleep(500)
}


возвращает
S
tarting!
Delay!
Result

Вот я не пойму, чего так? почему ждет до завершения блока в scope3 прежде чем вернуть значение функции?
источник

I

Igor in Kotlin Community
делаем
val scope3 = CoroutineScope( Job())

и результат ожидаемый

Starting!
Result
Delay!
источник

I

Igor in Kotlin Community
или     val res = criticalSectionSuspending()
тоже результат ожидаемый
Starting!
Result
Delay!
источник

AL

Anton Lakotka in Kotlin Community
Igor
И можно еще вопрос, есть такой пример:

val scope = CoroutineScope(SupervisorJob())
val scope2 = CoroutineScope(SupervisorJob()) //Different Dispatcher

suspend fun criticalSectionSuspending(): String {
  println("Starting!")
    val scope3 = CoroutineScope( coroutineContext)
    val someJob = scope3.launch {
           delay(200)
                   println("Delay!")
           }
   return "Result"
}
fun main() {
 scope.launch {
   val res =  scope2.async{criticalSectionSuspending()}.await()
     println(res)
 }
 Thread.sleep(500)
}


возвращает
S
tarting!
Delay!
Result

Вот я не пойму, чего так? почему ждет до завершения блока в scope3 прежде чем вернуть значение функции?
вообще не понимаю в чем практический смысл этих примеров, они крайне контринтуитивны.
если хочется эксперементировать с корутинами, советую сначала ознакомится с базовыми концепциями и почитать статьи Романа Елизарова  в частности (structural concurrency)

а так ответ на твой вопрос примерно такой:
когда создаешь scope3 и передаешь текущий context ты таким образом привязываешь скоуп3 к тому где вызывается criticalSection....  т.е. к скоупу, который создается в async. т.е. тот await будет длится чуть больше 200 милисекунд.

когда создаешь скоуп как CoroutineScope() -- то он становится глобальным. и поэтому await() не будет задерживаться на 200 миллисекунд
источник