Как правило, suspend fun
s нельзя использовать вместо обычных fun
s. Если вы попытаетесь вызвать suspend fun
напрямую с обычного fun
, вы получите ошибку во время компиляции.
В этом блоге упоминается, что вы можете создать параллельную карту в Котлине, написав
list.map { async { f(it) } }.map { it.await() }
Почему второй map
компилируется? Обычно вы не можете передать suspend fun
вместо fun
. Это
- что
map
является inline fun
и что подвеска автоматически выводится "вверх по течению"
- , что
map
является каким-то особенным случаем Котлина
- что-то еще?