我该如何定义&燃气轮机&引用;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
?原因大概是我想作者希望函数的调用完全像