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

zca*_*ate 4 clojure

我有一个协议:

(defprotocol IInterval
  (-duration  [in]))
Run Code Online (Sandbox Code Playgroud)

以及实现它的记录:

(defrecord Interval [start end]
  IInterval
  (-duration  [_] (- end
                     start)))
Run Code Online (Sandbox Code Playgroud)

如果我创造 (def i1 (Interval 0 1000))

我怎么能够在下面的方法implements?:

(implements? IInterval i1) => true
Run Code Online (Sandbox Code Playgroud)

Lee*_*Lee 8

你可以使用satisfies?:

(satisfies? IInterval i1)
Run Code Online (Sandbox Code Playgroud)