как передать функцию приостановки в качестве параметра другой функции? Котлинские сопрограммы

Я хочу отправить функцию приостановки в качестве параметра, но она показывает, что «Модификатор приостановки не применим к параметру значения». как это сделать?

fun MyModel.onBG(suspend bar: () -> Unit) {
  launch {
    withContext(Dispatchers.IO) {
        bar()
    }

  }
}

person Nurseyit Tursunkulov    schedule 28.04.2019    source источник


Ответы (1)


Модификатор Lambda suspend следует размещать после символа двоеточия, а не впереди. Пример:

fun MyModel.onBG(bar: suspend () -> Unit) {
  launch {
    withContext(Dispatchers.IO) {
      bar()
    }
  }
}
person Nurseyit Tursunkulov    schedule 28.04.2019
comment
Ответы только на код не приветствуются. Пожалуйста, объясните, как это решает проблему. Из отзыва - person Nick; 28.04.2019
comment
Большое спасибо, вы помогли мне сделать код более понятным! - person Georgiy Chebotarev; 22.06.2020
comment
@GeorgiyChebotarev Я рад, что смог помочь, да будет Аллах доволен тобой - person Nurseyit Tursunkulov; 16.02.2021