Clojure 如何检查记录是否实现了特定的协议?

Clojure 如何检查记录是否实现了特定的协议?,clojure,Clojure,我有一个协议: (defprotocol IInterval (-duration [in])) 以及实现它的记录: (defrecord Interval [start end] IInterval (-duration [_] (- end start))) 如果我创建(def i1(间隔0 1000)) 我如何才能使用方法实现?其中: (implements? IInterval i1) => true 您可以使用满足?

我有一个协议:

(defprotocol IInterval
  (-duration  [in]))
以及实现它的记录:

(defrecord Interval [start end]
  IInterval
  (-duration  [_] (- end
                     start)))
如果我创建
(def i1(间隔0 1000))

我如何才能使用方法
实现?
其中:

(implements? IInterval i1) => true

您可以使用
满足?

(satisfies? IInterval i1)

@为什么不呢?这正是函数的作用:我认为它起作用了。。。但它只适用于扩展协议,而不适用于我在问题中如何定义记录。@johnbakers。。。你可以像我一样尝试一下did@zcaudate-我把协议名称拼错了。您问题中的代码导致
(满足?间隔(->间隔0 1000))
为我返回
true
。@Lee。。。。六羟甲基三聚氰胺六甲醚。。。你说得对。。。。当我把它们放在同一个文件中时,它就起作用了,但是当我把它们放在不同的文件中时,它就不起作用了。。。。对不起,弄错了。我必须对发生的事情做更多的调查