core.async切换频道组合

时间:2016-04-11 20:11:01

标签: clojure core.async backpressure

我正在尝试使用core.async的混音。似乎将混合中的输入通道静音是实现背压的可能方式之一。我使用下面的代码:

(def output-chan (chan))
(def input-chan (chan))
(def mixer (admix (mix output-chan) input-chan))
(toggle mixer {input-chan {:mute true}})

评估REPL中的最后一行

CompilerException java.lang.IllegalArgumentException: No implementation of method: :toggle* of protocol: #'clojure.core.async/Mix found for class: java.lang.Boolean

上面的示例代码有什么问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

  

(def mixer(admix(mix output-chan)input-chan))

您将admix的返回值分配给mixer,这是一个布尔值,而不是预期的混音器。尝试:

(def output-chan (chan))
(def input-chan (chan))
(def mixer (mix output-chan))
(admix mixer input-chan)
(toggle mixer {input-chan {:mute true}})