Tôi có một multimethod chuyên về hai tham số:bắt defmethod tất cả
(defmulti get-tag-type (fn [type tag] [type tag]))
Có loại cho phép tôi vào nhóm defmethod khác nhau gọi vào bộ:
(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)
Tuy nhiên, đôi khi, tôi muốn bắt tất cả hoặc mặc định cho một trong các nhóm, sẽ được gọi nếu không có nhóm nào khác khớp với:
(defmethod get-tag-type [::dog :default] ::mutt)
Tuy nhiên, điều này không hoạt động trừ khi tag
thực sự là :default
.
Cách tốt nhất để thực hiện việc này là gì?
Tôi không muốn defmulti biết về các defmethods sẽ sử dụng nó. – Brigham