最近,我发现了以下代码:
runWithObject(block: suspend CoroutineScope.(myObject: MyClass) -> Unit) {
...
myObject?.let { runBlocking(myDispatcher) { block(it) } }
...
}谁能给我解释一下参数类型CoroutineScope.(myObject: MyClass) ->单元是什么意思(如果可能的话,还有一些文档)?由于我不确定这是什么,我甚至不知道如何询问Google XD
如果myObject为非空,则该参数似乎是应该运行的代码块。但是CoroutineScope.是用来干什么的呢?这是否意味着该函数只能在协程中运行?
发布于 2021-08-05 00:05:31
这是一个函数接收器,here解释道。在传递给这个高阶函数的lambda中,this是接收器。
在本例中,这意味着在lambda中,您可以自由调用作为CoroutineScope成员的函数(如launch、async、cancel和coroutineContext属性),而无需指定作用域。
https://stackoverflow.com/questions/68659070
复制相似问题