如何从常规函数返回暂停函数?如何创建暂停函数实例?
例如,我可以从函数返回异步结果:
fun <T> f(g: () -> T): Deferred<T> = GlobalScope.async { g() }
但是我注意到Kotlin允许以下功能签名:
fun <T> f(g: () -> T): suspend () -> T {
TODO()
}
我该如何实施?
一种方法:
fun <T> f(g: () -> T): suspend () -> T {
suspend fun intern() = g()
return ::intern
}
@@ Rene的答案,但简短一点:
fun <T> f(g: () -> T) = suspend { g() }