1

core.async のミックスを試しています。ミックス内の入力チャンネルをミュートすることは、バックプレッシャーを実装する可能な方法の 1 つと思われます。以下のコードを使用しています。

(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.

上記のコード例の何が問題になっていますか?

ありがとう!

4

1 に答える 1

1

(def mixer (admix (ミックス出力ちゃん) 入力ちゃん))

admixの戻り値をtoに割り当てますmixer。これはブール値であり、予想されるミキサーではありません。試す:

(def output-chan (chan))
(def input-chan (chan))
(def mixer (mix output-chan))
(admix mixer input-chan)
(toggle mixer {input-chan {:mute true}})
于 2016-04-12T02:09:48.640 に答える