kotlin - 对协程范围构造函数语法感到困惑

标签 kotlin

我不明白协程构造函数的语法。

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 运算符返回另一个 CoroutineContextDispatchers.MainJob 实现接口(interface) CoroutineContext

也就是说,Dispatchers.Main + viewModelJobplus的调用,构造了另一个CoroutineContext。内部这导致两个实例的集合。

关于kotlin - 对协程范围构造函数语法感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005590/

相关文章:

具有通用返回类型的访问者模式的 Java/Kotlin 强制转换异常

Android:无法使用 CustomAdapter 刷新 Listview

android - 字符串末尾的正则表达式替换在 Android 版 Kotlin 中不起作用

multithreading - 在 Kotlin Native 中,如何将对象保存在单独的线程中,并在不使用 C 指针的情况下从任何其他线程中改变其状态?

Android Studio 菜单 : Element group is not closed

kotlin - 如何在Kotlin中注释注释属性?

java - 应用程序模块中引用的库函数出现“未解析的引用”错误

java - 检测应用程序语言而不是手机语言

android - Jacoco gradle 'exclude'无法在Kotlin的Android项目中使用

java - 场景生成器无法在 IntelliJ Idea Community Edition 中打开