Adding, Emptying, and Subtracting Elements and Folding Contexts
Learn how to add, empty, or subtract elements from a context or fold a context.
We'll cover the following...
Adding contexts
What makes CoroutineContext truly useful is the ability to merge two of them.
The resulting context responds to both keys when we add two elements with different keys.
package kotlinx.coroutines.app
import kotlinx.coroutines.CoroutineName
import kotlinx.coroutines.Job
import kotlin.coroutines.CoroutineContext
fun main() {
val ctx1: CoroutineContext = CoroutineName("Name1")
println(ctx1[CoroutineName]?.name) // Name1
println(ctx1[Job]?.isActive) // null
val ctx2: CoroutineContext = Job()
println(ctx2[CoroutineName]?.name) // null
println(ctx2[Job]?.isActive) // true, because "Active"
// is the default state of a job created this way
val ctx3 = ctx1 + ctx2
println(ctx3[CoroutineName]?.name) // Name1
println(ctx3[Job]?.isActive) // true
}Adding two elements with different keys
When we add another element with the same key, like in a map, the new element replaces the ...
Ask