Kotlin 挂起函数引用作为let get错误的参数

Kotlin 挂起函数引用作为let get错误的参数,kotlin,kotlin-coroutines,suspend,kotlin-coroutines-flow,Kotlin,Kotlin Coroutines,Suspend,Kotlin Coroutines Flow,为什么Kotlin不能引用suspend函数作为let/allow和其他函数的参数 class X fun a(x: X) {} suspend fun b(x: X) {} X().let(::a) X().let(::b) // Error: Type mismatch 您只能从协同程序或其他挂起函数调用suspend函数。 并且,let不将挂起函数作为参数 public-inline-fun-T.let(块:(T)->R:R 与任何其他类型一样,函数声明必须匹配。将挂起函数传递给另

为什么Kotlin不能引用suspend函数作为let/allow和其他函数的参数

class X

fun a(x: X) {}
suspend fun b(x: X) {}

X().let(::a)
X().let(::b) // Error: Type mismatch

您只能从协同程序或其他挂起函数调用
suspend
函数。 并且,
let
不将挂起函数作为参数

public-inline-fun-T.let(块:(T)->R:R
与任何其他类型一样,函数声明必须匹配。将挂起函数传递给另一个不接受挂起函数的函数将不起作用

当您具有以下功能时,它将起作用:

这只是一个示例,没有用于打印日志的挂起函数的实际用例

suspend内联乐趣日志(block:suspend()->String){
val message:String=block()//我们假设计算block需要一些时间
return println(message)//一旦它可用,我们就打印它
}
您可以使用
log
功能,如:

suspend fun complexError():字符串{
//需要时间来计算。。。
返回“消息”
}
//用法
暂停错误处理(){
log(::complexError)//传递对complexError()的引用
//或
日志(){complexError()}
}