有一个功能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)

08-16 19:03