由:alexmiller发表评论
在ManyToManyChannel上使用现有的异步构建实现IDeref和IBlockingDeref的概念实施方案相对简单
`
(deftype ManyToManyChannel
#_现有代码...
IDeref
(deref [this] (<!! this))
IBlockingDeref
(deref [this ms timeoutValue]
(alt!!
this ([val _] val)
(timeout ms) timeoutValue)))
`
然而,M2MC在`clojure.core.async.impl.channels`中定义,`
`
(def ^:private <!!' (delay (find-var 'clojure.core.async/<!!)))
;; 然后
IDeref
(deref [this] (@<!!' this))
`
然而,对于等效的`alt!!`,它是一个围绕`do-alt`和`alts`的宏,我有一点困惑。