Kotlin:具有挂起函数返回类型的高阶函数

问题描述 投票:0回答:2

如何从常规函数返回暂停函数?如何创建暂停函数实例?

例如,我可以从函数返回异步结果:

fun <T> f(g: () -> T): Deferred<T> = GlobalScope.async { g() }

但是我注意到Kotlin允许以下功能签名:

fun <T> f(g: () -> T): suspend () -> T {
    TODO()
}

我该如何实施?

asynchronous kotlin coroutine kotlin-coroutines suspend
2个回答
1
投票

一种方法:

fun <T> f(g: () -> T): suspend () -> T {
    suspend fun intern() = g()
    return ::intern
}

0
投票

@@ Rene的答案,但简短一点:

fun <T> f(g: () -> T) = suspend { g() }
© www.soinside.com 2019 - 2024. All rights reserved.