如何将挂起函数作为显式参数传递给协程构建器?

wan*_*adu 5 anonymous-function kotlin kotlin-coroutines

我正在研究将launch协程代码作为block: suspend CoroutineScope.() -> Unit. 我们通常将代码作为 lambda 传递。但是,我想知道如何将此函数作为显式参数传递给启动函数。

coroutineScope {
    launch(block = ::myFunction)
}

suspend fun CoroutineScope.myFunction(): Unit {
    // coroutine code
}
Run Code Online (Sandbox Code Playgroud)

它给出以下错误

Type mismatch.
Required:
suspend CoroutineScope.() ? Unit
Found:
KSuspendFunction0<Unit>
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Gle*_*val 0

这条路怎么样?

coroutineScope {
    launch(block = myFunction())
}

fun myFunction(): suspend CoroutineScope.() -> Unit = {
    for(i in 3 downTo 1) {
        println("$i")
        delay(1000)
    }
}
Run Code Online (Sandbox Code Playgroud)