क्लोजर में डीफ़ और डिफेंस के बीच क्या अंतर है?क्लोजर में def और defonce के बीच क्या अंतर है?
डीई या इसके विपरीत का उपयोग कब करें?
क्लोजर में डीफ़ और डिफेंस के बीच क्या अंतर है?क्लोजर में def और defonce के बीच क्या अंतर है?
डीई या इसके विपरीत का उपयोग कब करें?
defonce
स्केल किया गया है जब चर पहले से परिभाषित किया गया है।
user> (def a 1) ;;=> #'user/a
user> a ;;=> 1
user> (def a 2) ;;=> #'user/a
user> a ;;=> 2
user> (defonce b 1) ;;=> #'user/b
user> b ;;=> 1
user> (defonce b 2) ;;=> nil
user> b ;;=> 1
परिभाषित केवल तभी बांधता है जब नाम मूल मान पर है यदि नाम का मूल मान नहीं है।
उदाहरण के लिए, Jay Fields blogs के बारे में, जब आप नेमस्पेस को फिर से लोड करना चाहते हैं तो संयोजन के रूप में उपयोग किया जा सकता है लेकिन आपको सभी को पुनः लोड करने की आवश्यकता नहीं हो सकती है।
(defonce ignored-namespaces (atom #{}))
(defn reload-all []
(doseq [n (remove (comp @ignored-namespaces ns-name) (all-ns))]
(require (ns-name n) :reload)))