(let [a (clojure.core.async/chan)]
(case a
a :foo
:bar))
#=> :bar
我期望:foo
這裏。我究竟做錯了什麼?在'case'中使用頻道
另一方面,(condp = chan ...)
完成這項工作。
PS:
基本上我嘗試做以下事情:
(require '[clojure.core.async :as a])
(let [chan1 (a/chan 10)
chan2 (a/chan 10)]
(a/>!! chan1 true)
(let [[v c] (a/alts!! [chan1 chan2])]
(case c
chan1 :chan1
chan2 :chan2
:niether)))
#=> :neither
永遠不要讀取源代碼。 ;)只需閱讀文檔(見下文)。 –
@AlanThompson刪除。我試圖在公交停車期間想到一些事情。顯然,這並沒有奏效。我喜歡閱讀核心來源!那裏有許多有趣的東西,雖然它很多都很模糊。 – Carcigenicate