gpt4 book ai didi

kotlin - 在当前上下文中如何访问 Kotlin 协程元素?

转载 作者:行者123 更新时间:2023-12-02 13:44:03 24 4
gpt4 key购买 nike

我正在尝试了解协程在 Kotlin 中的工作方式。我在网上看了几篇文章,包括这篇 - https://proandroiddev.com/demystifying-coroutinecontext-1ce5b68407ad - 但我仍然对如何访问当前上下文中的协程元素感到有些困惑。这是让我感到困惑的部分。

The elements in the current context can be obtained by using the top-level suspending coroutineContext read-only property.

println("Running in ${coroutineContext[CoroutineName]}")


在这种情况下, CoroutineName是对映射到 CoroutineName 的键的引用元素。我了解 get coroutineContext 上的方法查看提供给它的 key 的通用类型 - 在本例中, CoroutineName - 获取适当的元素。我想了解的是 CoroutineName ,或就此而言 Job , CoroutineExceptionHandlerCoroutineDispatcher当它们不是 CoroutineScope 的属性时,甚至可以在当前范围内引用。接收者。

最佳答案

这些都是coroutine context elements有房产key用于处理协程上下文中的元素(这是一种可寻址集合)。 CoroutineName ,与其他上下文元素一样,将键定义为对象:

companion object Key : Key<CoroutineName>

In Kotlin ,您可以使用类名访问类的伴随对象:

The companion object is a singleton, and its members can be accessed directly via the name of the containing class (although you can also insert the name of the companion object if you want to be explicit about accessing the companion object)



所以,我认为这两个表达式将是相同的:

coroutineContext[CoroutineName]
coroutineContext[CoroutineName.Key]

另一个关于 SO 上伴生对象的好问题: What is the point of naming a companion object in kotlin

顺便说一句,您只需 ctrl + 单击 CoroutineNamecoroutineContext[CoroutineName]在 IDEA 中并自己查看声明。

关于kotlin - 在当前上下文中如何访问 Kotlin 协程元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60700678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com