2016-05-20 13 views

उत्तर

12

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 
4

परिभाषित केवल तभी बांधता है जब नाम मूल मान पर है यदि नाम का मूल मान नहीं है।

उदाहरण के लिए, 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))) 
संबंधित मुद्दे