मैं एक multimethod कि दो मापदंडों पर माहिर है: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 सेट में कॉल
(defmulti get-tag-type (fn [type tag] [type tag]))
प्रकार के बाद मुझे समूह के लिए अनुमति देता समूह में से किसी एक के लिए सभी या डिफ़ॉल्ट पकड़ें, जिसे किसी अन्य से मेल नहीं किया जाएगा:
(defmethod get-tag-type [::dog :default] ::mutt)
हालांकि, यह तब तक काम नहीं करता जब तक tag
वास्तव में :default
है।
इसे पूरा करने का एक अच्छा तरीका क्या है?
मैं नहीं चाहता कि defmulti defmethods के बारे में जानना चाहें जो इसका उपयोग करेंगे। – Brigham