Size: a a a

Kotlin Community

2020 October 17

AN

Alexander Nozik in Kotlin Community
Igor
Кстати, а из java можно с deferred работать? Или надо CF всегда юзать?
Ограниченно. Await без континуаций не сделать. Проще в CF сконвертить
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
А нафига мешать корутины с колбэками?
сейчас это не колбек, а просто инлайн дсл, чтобы нон-нулл результаты получать
источник

с#

саша сок #KotlinGang... in Kotlin Community
fun getUser(): User? {
   client.getUser(...) {
       success { return it }
   }
   return null
}
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
сейчас это не колбек, а просто инлайн дсл, чтобы нон-нулл результаты получать
Ну это все пожалуйста. Я к тому, что если там реально колбэк, то это что-то странное. Потому что корутины как раз заменяют колбэки
источник

AM

Andrew Mikhaylov in Kotlin Community
саша сок #KotlinGang
у меня проблема в таком коде

view.hide()  // ui
client.getUser(...)  // not ui
Я может плохо понял, а почему нельзя
suspend fun getUser(...) = withContext(...) { ... }
?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Andrew Mikhaylov
Я может плохо понял, а почему нельзя
suspend fun getUser(...) = withContext(...) { ... }
?
а если я сделаю

class MyClient : CoroutineScope {
   override val coroutineContext = Dispatchers.IO

   suspend fun a() {
       // Будет ли тут IO ?
   }
}
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
а если я сделаю

class MyClient : CoroutineScope {
   override val coroutineContext = Dispatchers.IO

   suspend fun a() {
       // Будет ли тут IO ?
   }
}
Плехо. Поломанана structured concurrency
источник

I

Igor in Kotlin Community
саша сок #KotlinGang
а если я сделаю

class MyClient : CoroutineScope {
   override val coroutineContext = Dispatchers.IO

   suspend fun a() {
       // Будет ли тут IO ?
   }
}
Конечно нет
источник

AM

Andrew Mikhaylov in Kotlin Community
саша сок #KotlinGang
а если я сделаю

class MyClient : CoroutineScope {
   override val coroutineContext = Dispatchers.IO

   suspend fun a() {
       // Будет ли тут IO ?
   }
}
То, что ты унаследовался от скоупа, значит, что вот на этом классе все лончи и асинки будут с этим контекстом вызываться.
источник

AP

Aleksandr Petrov in Kotlin Community
Добрый день, не подскажите какую -нить статью, где детально описывается как работают suspend функции - во что транслируется код (континуации с конечным автоматом) и как оно работает по шагам.
Я взял простой пример:
class TestKotlin {

   companion object {
       val instance = TestKotlin()
   }

   suspend fun doSomething(str: String): String {
       return withContext(Dispatchers.Default) {
           val s = str + " two"
           s
       }
   }

   suspend fun callDoSomething(): String {
       val s1 = doSomething("one")
       val s2 = doSomething(s1)
       return s1+s2
  }

}
Далее Tools -> Kotlin -> Show Kotlin Byte code -> Decompile.

Вижу что в сигнатуру суспенд функций добавились континуации, вижу конечный автомат с label , но до конца не понятно как это отработает по шагам.
Нвпример, в коде функиции
public final Object callDoSomething(@NotNull Continuation $completion) {
...
label22: {
...
case 2:
           s1 = (String)((<undefinedtype>)$continuation).L$1;
           TestKotlin var7 = (TestKotlin)((<undefinedtype>)$continuation).L$0;
           ResultKt.throwOnFailure($result);
           var10000 = $result;
           break label22;
такое ощущение, что тут происходит зацикливание
источник

AP

Aleksandr Petrov in Kotlin Community
Хочу разобраться детально как работают под капотом суспенд функции
источник

RE

Roman Elizarov in Kotlin Community
источник

AP

Aleksandr Petrov in Kotlin Community
спасибо
источник

MY

Mononobe Yū in Kotlin Community
можете что-нибудь посоветовать (статьи, книги, видео уроки) для новичка?
источник

AM

Andrew Mikhaylov in Kotlin Community
Mononobe Yū
можете что-нибудь посоветовать (статьи, книги, видео уроки) для новичка?
Открываете описание чата, тыкаете в ссылку ЧАВО, находите материалы на странице.
источник

D

Denys in Kotlin Community
Kotlin 1.4.10 ведь можно использовать с kotlinx.serialization 1.0.0?
источник

с#

саша сок #KotlinGang... in Kotlin Community
слушайте, ни у кого не было кейса в tornadofx поставить кастом цвет титл бара ?

я уже столько перерыл всего и везде советуют создавать кастом окно с StageStyle.UNDECORATED, но это ужас, потому что оно не будет себя адекватно вести
источник

с#

саша сок #KotlinGang... in Kotlin Community
источник

QH

Quantum Harmonizer in Kotlin Community
stylish screencast, dude
источник

с#

саша сок #KotlinGang... in Kotlin Community
Quantum Harmonizer
stylish screencast, dude
да я в диалог просто кидал, там мне было лень открывать обс, а пк нет щас
источник