2016-04-11 23 views
1

Ich experimentiere mit den Mixes von core.async. Es scheint, dass das Stummschalten eines Eingangskanals in einem Mix einer der möglichen Wege zum Implementieren von Gegendruck sein könnte. Ich verwende den folgenden Code:core.async toggle channel mix

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

Auswertung letzte Zeile in der REPL

gibt

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

Was ist mit dem obigen Beispielcode falsch?

Danke!

Antwort

1

(def Mischer (admix (Mischungsausgangs-chan) Eingabe-chan))

Sie weisen den Rückgabewert von admix zu mixer, die eine boolesche und nicht die erwartete Mischer. Versuchen Sie:

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

Vielen Dank! Ich glaube, ich wurde durch die Wandlungsfähigkeit von "Mixer" verwirrt. – siphiuel