मान लीजिए मेरे पास एक रिकॉर्ड है जो "फ़ंक्शन-जैसा" है, कम से कम इस अर्थ में कि यह एक ऑपरेशन का प्रतिनिधित्व करता है जिसे कुछ तर्कों पर लागू किया जा सकता है।आईएफएन लागू करने के लिए क्लोजर रिकॉर्ड के लिए यह अच्छा अभ्यास है?
मैं clojure.lang.IFn
को लागू करने से यह एक समारोह के रूप में काम कर सकते हैं, कुछ की तरह:
(defrecord Func [f x]
clojure.lang.IFn
(invoke [this arg]
(f x arg))
(applyTo [this args]
(apply f x args)))
((->Func + 7) 1)
=> 8
(हाँ मुझे पता है कि मैं सिर्फ partial
के एक अवर संस्करण reimplemented किया है .... यह सिर्फ एक उदाहरण है: -))
एक रिकॉर्ड बना रहा है clojure.lang.IFn
एक अच्छा अभ्यास या नहीं?
इस दृष्टिकोण के लिए कोई समस्या है?
एक रिकॉर्ड 'clojure.lang.Associative' को लागू करने के लिए प्रतीत होता है लेकिन' clojure.lang.IFn' नहीं। तो आप खोजशब्द को देखने के लिए '(: कुछ रिकॉर्ड) 'कर सकते हैं लेकिन' (कुछ-रिकॉर्ड: x) ' – mikera
सटीक रूप से नहीं। मैंने जांच की है लेकिन रिच से इस बारे में कुछ भी स्पष्ट नहीं देखा है। शायद यह सिर्फ एक निरीक्षण है। –
+1 दिया गया क्योंकि @ मिकरा का सवाल रिकॉर्ड्स के प्रकारों के बारे में नहीं पूछता है। चूंकि रिकॉर्ड्स में मैप-जैसे सेमेन्टिक्स पहले से ही भ्रमित हो जाएंगे, क्योंकि इस समस्या के प्रकार इस प्रकार नहीं हैं। – ponzao