मैं एक ऐसा फ़ंक्शन बनाना चाहता हूं जो एक आवश्यक तर्क x लेता है, और या तो एक वैकल्पिक तर्क opt1 या एक कीवर्ड तर्क opt2।क्लोजर कीवर्ड और वैकल्पिक तर्क समस्या
अभी मैं
(defn foo x & [opt1 {:keys [opt2]}]
...
है लेकिन इसके बाद के संस्करण हस्ताक्षर केवल मुझे कीवर्ड तर्क opt2 में पारित जब दोनों एक्स और opt1 मौजूद है
(foo 'x 'opt1 {:opt2 'opt2})
नहीं की तरह इस
(foo 'x {:opt2 'opt2})
की सुविधा देता है
कृपया मुझे एक ऐसा फ़ंक्शन बनाने में सहायता करें जो आवश्यक तर्क X लेता है और या तो opt1 या opt2, whe पुनः opt2 एक कीवर्ड तर्क है।
धन्यवाद।
संपादित करें: मैं अन्य मैक्रोज़ के लिए भी ऐसा करना चाहता हूं। तो मुझे अभी भी defmacro का उपयोग करने की जरूरत है।
'[clojure.contrib.def] से defnk' उपयोग करने पर विचार (http://richhickey.github.com/clojure-contrib/def-api.html) स्पष्ट destructuring के बजाय। – ffriend
'defnk' को 1.2 के रूप में अधिक सुसंगत अंतर्निहित कार्यक्षमता के पक्ष में बहिष्कृत किया गया है। – kotarak