Kotlin 对协同路由作用域构造函数语法感到困惑

Kotlin 对协同路由作用域构造函数语法感到困惑,kotlin,Kotlin,我不理解协程构造函数的语法 private val uiScope = CoroutineScope(Dispatchers.Main + viewModelJob) 我知道参数需要Coroutine上下文类。 我不明白的是我们怎样才能添加两个不同的对象? 调度员。主类是MainCoroutineDispatcher viewModelJob类是Job。 有什么解释吗?CoroutineScope不是一个构造函数,而是一个函数,定义如下: public fun CoroutineScope(c

我不理解协程构造函数的语法

private val uiScope = CoroutineScope(Dispatchers.Main + viewModelJob)
我知道参数需要Coroutine上下文类。 我不明白的是我们怎样才能添加两个不同的对象? 调度员。主类是MainCoroutineDispatcher viewModelJob类是Job。
有什么解释吗?

CoroutineScope
不是一个构造函数,而是一个函数,定义如下:

public fun CoroutineScope(context: CoroutineContext): CoroutineScope = ...
该参数是接口
CoroutineContext
,它本身定义了一个加号运算符:

public operator fun plus(context: CoroutineContext): CoroutineContext = ...
plus
操作符返回另一个
CoroutineContext
<代码>调度员。主和
作业
实现接口
CoroutineContext

也就是说,
Dispatchers.Main+viewModelJob
是对
plus
的调用,它构造了另一个
CoroutineContext
。这将导致两个实例的集合