在Clojure(core.async)中,alts和alt有什么区别?

时间:2014-02-28 03:17:02

标签: clojure core.async

我无法弄清楚:

之间的区别
alts!

alt!

在Clojure的core.async

1 个答案:

答案 0 :(得分:37)

alts!函数,它接受要从中获取的通道向量和/或带有值的通道(以双向量的形式:{{1} })。矢量可以动态构造;调用[c v]的代码可能不知道它将选择多少个通道(事实上,这个数字在调用时不必保持不变)。

alts!是一种方便的,它基本上是alt!cond之间的交叉。这里必须静态地知道“端口”(通道或通道+值对)的数量,但在实践中经常会出现这种情况,并且类似alts!的语法非常清楚。

cond使用alt!扩展为一个有点复杂的表达式;除了语法上的便利之外,它没有提供额外的功能。