我该如何定义&燃气轮机&引用;clojure中我自己的记录类型上的方法

我该如何定义&燃气轮机&引用;clojure中我自己的记录类型上的方法,clojure,clojurescript,Clojure,Clojurescript,我有这样的记录: (defrecord MyRec [name val]) 我想基于val字段比较实例: (def foo (->MyRec :foo 1)) (def bar (->MyRec :bar 2)) (> foo bar) => false 首先,您应该从ns声明中排除clojure.core/>,如下所示: (ns foo (:refer-clojure :exclude [>])) 然后试试这个: (defprotocol FooComp

我有这样的记录:

(defrecord MyRec [name val])
我想基于val字段比较实例:

(def foo (->MyRec :foo 1))
(def bar (->MyRec :bar 2))
(> foo bar)
=> false

首先,您应该从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

为什么不使用
java.util.comparator
通用接口?如果我理解正确,您会问为什么不使用
java.util.comparator
而不是
foobarable
?原因大概是我想作者希望函数的调用完全像