有一个功能chan
用于创建通道。但是我没有看到chan?
。
我该如何编写谓词chan?
来为chan
创建的对象返回true?
我在问Clojure和ClojureScript。
最佳答案
由于频道是implemented as:
(deftype ManyToManyChannel [^LinkedList takes ^LinkedList puts ^Queue buf closed ^Lock mutex add!]
...)
您可以检查它是否是
ManyToManyChannel
的实例:(import [clojure.core.async.impl.channels ManyToManyChannel])
(instance? ManyToManyChannel obj)
或者,如果您更关心协议而不是类型本身,则可以检查对象
satisfies?
是否是协议之一:(satisfies? clojure.core.async.impl.protocols/WritePort
obj)