Напишу последний раз и сфорвардю в сохранёнки. У котлина явная асинхронность и неявная синхронность, в отличие от async/await языков, типа питона, шарпа или джыэса.. Если надо что-то запустить асинхронно, надо явно запустить это через launch/async. То есть, асинхронщина явно видна в коде и нет никакого смешивания IO и асинхронщины.
Если вам уж сильно хочется пометить что-то через IO, используйте ресиверы, как у нас в kotlinx.coroutines используется CoroutineScope.
То есть, также, как в корутинах есть идиома CoroutineScope.foo()
!= suspend foo
, так и тут можно написать что-то типа suspend IO.foo()
.
Не могу поверить, что котлин != скала так туго доходит. Почему-то котлин != джава дошло почти сразу.
тю подожди, это как это так в языках с async/await неявная асинхронность?