Size: a a a

Programming Offtop

2020 October 14

с#

саша сок #KotlinGang... in Programming Offtop
(
Особенно радует, что когда современное программирование стремится уменьшить длину табуляции (и.е. вложенность), корутины вводят withContext, coroutineScope и прочее
можно пример, когда withContext будет выглядить некрасиво и функция при этом не нарушает правила, что она выполняет ровно одно своё действие

fun sendMessage() = withContext(...) {
   
}
fun another() = coroutineScope {

}
источник

I

Ilmir in Programming Offtop
Mikhail Levchenko
@ilmirus когда для велью классов завезут row polymorphism?
( ͡° ͜ʖ ͡°)
Наверно, для K/JS это можно будет завезти, я не вижу пока способа, как это сделать в K/JVM из-за необходимости CHECKCASTов. То есть, в K/JVM приходится наследоваться от интерфейсов с интересующими полями.
источник

(

( in Programming Offtop
саша сок #KotlinGang
можно пример, когда withContext будет выглядить некрасиво и функция при этом не нарушает правила, что она выполняет ровно одно своё действие

fun sendMessage() = withContext(...) {
   
}
fun another() = coroutineScope {

}
fun shoditbVSetb() = scope.launch {
 val result = iduVSetb()
 withContext(Dispatchers.Main) {
   updateUI(result)
 }
}
источник

с#

саша сок #KotlinGang... in Programming Offtop
(
fun shoditbVSetb() = scope.launch {
 val result = iduVSetb()
 withContext(Dispatchers.Main) {
   updateUI(result)
 }
}
это большое вложение?
источник

AG

Alexander Gorodok in Programming Offtop
(
fun shoditbVSetb() = scope.launch {
 val result = iduVSetb()
 withContext(Dispatchers.Main) {
   updateUI(result)
 }
}
Не одно действие. Но для троллинга не нужно целиком читать, совсем забыл.
источник

(

( in Programming Offtop
саша сок #KotlinGang
это большое вложение?
это синтетический пример
источник

с#

саша сок #KotlinGang... in Programming Offtop
(
это синтетический пример
какая разница. это максимум, что может получиться
источник

ML

Mikhail Levchenko in Programming Offtop
Ilmir
Наверно, для K/JS это можно будет завезти, я не вижу пока способа, как это сделать в K/JVM из-за необходимости CHECKCASTов. То есть, в K/JVM приходится наследоваться от интерфейсов с интересующими полями.
типа interface HasXProperty?
источник

I

Ilmir in Programming Offtop
Mikhail Levchenko
типа interface HasXProperty?
Ага
источник

(

( in Programming Offtop
саша сок #KotlinGang
какая разница. это максимум, что может получиться
Сильное заявление. Доказывай
источник

ML

Mikhail Levchenko in Programming Offtop
Ilmir
Ага
ну норм, главное, чтобы при этом не стирался тип
источник

с#

саша сок #KotlinGang... in Programming Offtop
(
Сильное заявление. Доказывай
чтобы это доказать мне надо привести все примеры, которые можно сделать на корутинах. тебе же, чтобы доказать обратное нужно привести только 1 любой пример, где это не так. так что доказывай ты
источник

(

( in Programming Offtop
саша сок #KotlinGang
чтобы это доказать мне надо привести все примеры, которые можно сделать на корутинах. тебе же, чтобы доказать обратное нужно привести только 1 любой пример, где это не так. так что доказывай ты
Вот именно, поэтому твоё утверждение, как минимум, очень сомнительно
источник

BP

Bogdan Panchenko in Programming Offtop
🍿
источник

с#

саша сок #KotlinGang... in Programming Offtop
(
Вот именно, поэтому твоё утверждение, как минимум, очень сомнительно
я основываюсь на своём опыте и у меня никогда не было проблем с вложенностью в корутинах
источник

AM

Andrew Mikhaylov in Programming Offtop
(
Особенно радует, что когда современное программирование стремится уменьшить длину табуляции (и.е. вложенность), корутины вводят withContext, coroutineScope и прочее
С этим, кстати, наверняка декораторы свежепоказанные бороться будут.
источник

(

( in Programming Offtop
Вот тебе другой пример @y9san9
fun shoditbVSetbCached() = scope.launch {
 val result = iduVSetb()
 withContext(dbWriteContext) {
   writeToDb(result)
   withContext(Dispatchers.Main) {
     updateUI(result)
   }
 }
источник

с#

саша сок #KotlinGang... in Programming Offtop
(
Вот тебе другой пример @y9san9
fun shoditbVSetbCached() = scope.launch {
 val result = iduVSetb()
 withContext(dbWriteContext) {
   writeToDb(result)
   withContext(Dispatchers.Main) {
     updateUI(result)
   }
 }
плохой пример
источник

с#

саша сок #KotlinGang... in Programming Offtop
(
Вот тебе другой пример @y9san9
fun shoditbVSetbCached() = scope.launch {
 val result = iduVSetb()
 withContext(dbWriteContext) {
   writeToDb(result)
   withContext(Dispatchers.Main) {
     updateUI(result)
   }
 }
fun shoditbVSetbCached() = scope.launch {
 val result = iduVSetb()
 withContext(dbWriteContext) {
   writeToDb(result)
 }
 // будет вызвано после завершения контекста выше
 withContext(Dispatchers.Main) {
   updateUI(result)
 }
}
источник

AM

Andrew Mikhaylov in Programming Offtop
Блин, наконец и себе сделаю. Самый полезный гайд года.
источник