我有这样的记录:
(defrecord MyRec [name val])
我想根据val字段比较实例:
(def foo (->MyRec :foo 1))
(def bar (->MyRec :bar 2))
(> foo bar)
=> false
答案 0 :(得分:3)
首先,您应该从ns声明中排除clojure.core/>
,如下所示:
(ns foo
(:refer-clojure :exclude [>]))
然后试试这个:
(defprotocol FooComparable
(> [a b]))
(defrecord MyRec [name val]
FooComparable
(> [a b] (clojure.core/> (:val a) (:val b))))
(def a (MyRec. :foo 1))
(def b (MyRec. :bar 2))
(> a b) ; false
(> b a) ; true