core.async 切换频道组合
core.async toggle channel mix
我正在试验 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
.
上面的示例代码有什么问题?
谢谢!
(def mixer (admix (mix output-chan) input-chan))
您将 admix
的 return 值分配给 mixer
,这是一个布尔值,而不是预期的混合器。尝试:
(def output-chan (chan))
(def input-chan (chan))
(def mixer (mix output-chan))
(admix mixer input-chan)
(toggle mixer {input-chan {:mute true}})
我正在试验 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
.
上面的示例代码有什么问题?
谢谢!
(def mixer (admix (mix output-chan) input-chan))
您将 admix
的 return 值分配给 mixer
,这是一个布尔值,而不是预期的混合器。尝试:
(def output-chan (chan))
(def input-chan (chan))
(def mixer (mix output-chan))
(admix mixer input-chan)
(toggle mixer {input-chan {:mute true}})