2013-12-19 35 views

回答

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 
+0

真棒,謝謝) –

+1

爲什麼不使用'java.util.comparator'通用接口? –

+0

如果我理解你對,你問爲什麼不使用'java.util.Comparator'而不是'FooComparable'?原因就在於我認爲作者想要函數被完全稱爲'>' – hsestupin

相關問題