Kotlin 如何从协同程序';s频道?

Kotlin 如何从协同程序';s频道?,kotlin,kotlin-coroutines,kotlinx.coroutines.channels,Kotlin,Kotlin Coroutines,Kotlinx.coroutines.channels,假设我在一个通道中发送了一些值 val channel = Channel<Int>() launch { for (x in 1..5) channel.send(x * x) } val channel=channel() 发射{ 用于(1..5中的x)通道。发送(x*x) } 我怎样才能“清除”它们?意思是不使用它们就消费它们不确定这是否有帮助,但我想我应该给你一些我觉得想要清除通道有点代码味道。。。我觉得这就像是想取消你已经调用过的函数的调用。您能提供更多的上下文

假设我在一个通道中发送了一些值

val channel = Channel<Int>()
launch {
    for (x in 1..5) channel.send(x * x)
}
val channel=channel()
发射{
用于(1..5中的x)通道。发送(x*x)
}

我怎样才能“清除”它们?意思是不使用它们就消费它们

不确定这是否有帮助,但我想我应该给你一些我觉得想要清除通道有点代码味道。。。我觉得这就像是想取消你已经调用过的函数的调用。您能提供更多的上下文吗?我将考虑在每条消息上实现类似到期的功能,或者为每条消息设置一些计数器,然后为您的消费者控制一些大于偏移量的功能。太旧或序列小于偏移量的邮件将被丢弃而不是处理。一般说明:通道是单消费者,因此您不应试图找到从侧面进入并取出邮件的方法。专注的消费者应该是唯一采取行动的人,他们应该决定何时不采取任何行动。谢谢大家的评论。我会重新考虑这个方法,我可能会为消息设置一个到期日或类似的东西(如@Laurence所说),并让消费者成为专门的消费者(如@Marko所说)