2011-04-06 13 views
24

अक्सर मुझे क्लोजर में एक फ़ंक्शन को परिभाषित करने की आवश्यकता होती है। अगर मैं कुछ परिभाषित करता हूं तो मैं इसे कैसे परिभाषित कर सकता हूं?क्लोजर में किसी फ़ंक्शन को कैसे परिभाषित किया जा सकता है?

उत्तर

7

यदि आपके पास:

(def x 42) 

यह वर निकल करने के लिए उपयोगी हो सकता है:

(.unbindRoot #'x) 

अब, अगर आप इस

x 

कोशिश आप मिल:

#<Unbound Unbound: #'user/x> 
15

मुझे लगता है कि आप इसे करने के लिए ns-unmap का उपयोग कर सकते हैं।

पीएस इस कोड को टिप्पणी में नहीं जोड़ा जा सका, इसलिए मैंने इसे यहां रखा। क्योंकि एक ही वार से अधिक नाम स्थान में मैप किया जा सकता,

(ns-unmap *ns* 'method) 
+0

मुझे java.lang.IllegalArgumentException मिलता है जब मैं उपयोग करता हूं (ns-unmap :: कुछ-विधि)। क्या कोई तर्क संस्करण है? – Zubair

36

कोई एक तर्क संस्करण है: वर्तमान नाम स्थान में समारोह unmap के लिए, आपको कोड निम्न का उपयोग करने की आवश्यकता है। यदि आप आरईपीएल से काम कर रहे हैं, तो आप अक्सर उपयोगकर्ता नामस्थान से अनबिंड करना चाहते हैं, उदा।

(ns-unmap 'user 'symbol-to-unbind) 

एनएस-अनैप के लिए पहला तर्क प्रतीक या नामस्थान हो सकता है, और दूसरा तर्क प्रतीक होना चाहिए।

+1

किसी भी कारण से एनएस-अनमैप केवल एक योग्य प्रतीक नहीं ले सकता है, उदा। ' 'उपयोगकर्ता/प्रतीक करने वाली unbind'? – mikera

संबंधित मुद्दे

 संबंधित मुद्दे