在Clojure中,如何检查对象是否为core.async通道?

在Clojure中,如何检查对象是否为core.async通道?,clojure,clojurescript,core.async,Clojure,Clojurescript,Core.async,有一个函数chan用于创建频道。但是我没有看到成龙。 如何编写谓词chan?,该谓词对于chan创建的对象返回true 我问的是Clojure和ClojureScript。因为频道是: 您只需检查它是否是ManyToManyChannel的实例: (import [clojure.core.async.impl.channels ManyToManyChannel]) (instance? ManyToManyChannel obj) 或者,如果您更关心协议而不是类型本身,则可以检查对象是否

有一个函数
chan
用于创建频道。但是我没有看到成龙。 如何编写谓词
chan?
,该谓词对于
chan
创建的对象返回true

我问的是Clojure和ClojureScript。

因为频道是:

您只需检查它是否是
ManyToManyChannel
的实例:

(import [clojure.core.async.impl.channels ManyToManyChannel])

(instance? ManyToManyChannel obj)
或者,如果您更关心协议而不是类型本身,则可以检查对象
是否满足以下协议之一:

(satisfies? clojure.core.async.impl.protocols/WritePort
            obj)

@RobN我应该注意到我不知道Clojurescript。我快速搜索显示,
import
在clj和cljs之间的工作方式似乎有所不同。我知道这对前者有效;对后者不确定。在JIRA中有一个悬而未决的问题,您可以投票表决:。
(satisfies? clojure.core.async.impl.protocols/WritePort
            obj)