首页 > 解决方案 > 在 Iterable.sortedBy 中执行挂起函数

问题描述

我有这个代码:

interface Film {

  suspend fun total(): Int

}

suspend fun getFilms() : List<Film> {
  return films.sortedBy { it.total() }
}

但我得到一个错误,因为我Film::total在非暂停函数(sortedBy选择器)中调用方法。我该如何解决这个问题?

标签: kotlinkotlin-coroutines

解决方案


suspend fun getFilms(): List<Film> {
    return films
        .map { it to it.total() }
        .sortedBy { it.second }
        .map { it.first }
}

推荐阅读