我不明白协程构造函数的语法。
private val uiScope = CoroutineScope(Dispatchers.Main + viewModelJob)
我知道参数需要协程上下文类。 我不明白的是我们如何添加 2 个不同的对象? Dispatchers.Main类是MainCoroutineDispatcher viewModelJob 类是 Job。 有什么解释吗?
最佳答案
CoroutineScope
不是构造函数而是函数,定义为:
public fun CoroutineScope(context: CoroutineContext): CoroutineScope = ...
参数是接口(interface)CoroutineContext
,它本身定义了一个加号运算符:
public operator fun plus(context: CoroutineContext): CoroutineContext = ...
plus
运算符返回另一个 CoroutineContext
。 Dispatchers.Main
和 Job
实现接口(interface) CoroutineContext
。
也就是说,Dispatchers.Main + viewModelJob
是plus
的调用,构造了另一个CoroutineContext
。内部这导致两个实例的集合。
关于kotlin - 对协程范围构造函数语法感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005590/