Rob*_*b N 3 clojure clojurescript core.async
有一个chan创建频道的功能。但我没有看到chan?. 我将如何编写一个谓词chan?为由创建的对象返回 true chan?
我在询问 Clojure 和 ClojureScript。
由于通道实现为:
(deftype ManyToManyChannel [^LinkedList takes ^LinkedList puts ^Queue buf closed ^Lock mutex add!]
...)
Run Code Online (Sandbox Code Playgroud)
你可以检查它是否是一个实例ManyToManyChannel:
(import [clojure.core.async.impl.channels ManyToManyChannel])
(instance? ManyToManyChannel obj)
Run Code Online (Sandbox Code Playgroud)
或者,如果您更关心协议而不是类型本身,您可以检查对象satisfies?是否属于协议:
(satisfies? clojure.core.async.impl.protocols/WritePort
obj)
Run Code Online (Sandbox Code Playgroud)