मैंने दो सेटों के सममित अंतर की गणना करने के लिए एक समारोह लिखा (4clojure साइट पर समस्याओं में से एक)। समारोह ने इकाई परीक्षण पास किए, लेकिन यह उतना साफ नहीं है जितना मैं चाहूंगा, क्योंकि मेरे पास डुप्लिकेट कोड है।क्लोजर में किसी फ़ंक्शन के भीतर फ़ंक्शन को परिभाषित कैसे किया जाए और उस संदर्भ को संदर्भित किया जाए?
(fn [x y] (set (concat
(keep-indexed #(if (nil? (get y %2)) %2) x)
(keep-indexed #(if (nil? (get x %2)) %2) y))))
जाहिर है मैं की तरह कुछ पसंद करेंगे:
(fn [x y] (set (concat (diff x y) (diff y x))))
कहाँ diff समारोह में परिभाषित किया गया है और संदर्भित "इनलाइन" है, लेकिन मैं ऐसा करने के लिए कैसे एक fn ब्लॉक में पता नहीं है।
(fn [x y]
(let [diff (... function body here ...)]
(set
(concat (diff x y) (diff y x)))))
आप वास्तव में 4clojure पर अन्य लोगों के उत्तरों को देख सकते हैं (एक बार जब आप प्रश्न पूरा कर लेंगे) जो आपको एक विचार दे सकता है कि आप अपने प्रयासों को कैसे व्यवस्थित कर सकते हैं। –