我有專門的兩個參數的多重方法:defmethod捕獲所有
(defmulti get-tag-type (fn [type tag] [type tag]))
具有類型允許我組不同defmethod調入集:
(defmethod get-tag-type [::cat 0] [type tag] ::tiger)
(defmethod get-tag-type [::cat 1] [type tag] ::lion)
(defmethod get-tag-type [::cat 2] [type tag] ::jaguar)
(defmethod get-tag-type [::dog 0] [type tag] ::poodle)
(defmethod get-tag-type [::dog 1] [type tag] ::australian-shepherd)
(defmethod get-tag-type [::dog 2] [type tag] ::labrador-retriever)
然而,有時候,我想包羅萬象的或默認的羣體之一,這將被稱爲如果沒有其他的匹配:
(defmethod get-tag-type [::dog :default] ::mutt)
然而,這不起作用,除非tag
實際上是:default
。
什麼是實現這一目標的好方法?
我不希望defmulti知道將使用它的defmethods。 – Brigham 2012-02-25 01:51:06