2010-04-30 13 views
51

मैं जानना चाहता हूं कि क्लोजर नेमस्पेस के सभी कार्यों को कैसे सूचीबद्ध किया जाए। मैंने कुछ शोध किया है लेकिन मैं अभी तक नहीं हूं। मैं पहले से ही पता चला शो विधि का उपयोग कर एक जावा वर्ग के तरीकों को सूचीबद्ध करने के लिए कैसे:नामस्थान के कार्यों को कैसे सूचीबद्ध करें?

(show java.awt.Graphics) 

एक Clojure नाम स्थान के कार्यों को सूचीबद्ध करने के मैं इस तरह शो विधि की कोशिश की है:

(show 'clojure.contrib.repl-utils) 

यह कुछ जावा क्लास विधियों को दिखाता है, लेकिन जिनके लिए मैं doc और show की तरह दिख रहा हूं। मैं उन्हें कैसे प्राप्त कर सकता हूं?

उत्तर

75

मैं सामान्य रूप से Vars नाम स्थान foo द्वारा निर्यात सूची

(keys (ns-publics 'foo)) 

कहते हैं; जैसे clojure.contrib.monads के लिए इस

(defmonad censor m-when-not m+write+m maybe-m maybe-t ...) 

(... काफी एक बहुत अधिक के लिए खड़ा है) देता है।

आम तौर पर, वहाँ कार्यों जिनके नाम ns- जो नाम स्थान से Vars सूची, कुछ अतिरिक्त मानदंड संलग्न साथ में शुरू के एक समूह है:

  1. ns-map - सभी के अधिकांश सामान्य समारोह, एक नक्शा keyed रिटर्न प्रतीकों (गैर-नामस्थान-योग्य प्रतीकों वास्तव में) द्वारा, जहां प्रत्येक प्रतीक से संबंधित मान वारा या वर्ग होता है जो प्रतीक दिए गए नामस्थान में हल होता है।

  2. ns-interns - ns-map की तरह है, लेकिन शामिल केवल Vars दिया नाम स्थान में प्रशिक्षु (के रूप में अन्य नामस्थान जो एक use या refer कॉल या से Vars का अंतर्निहित रेफरल के कारण दिए गए नाम स्थान से सुलभ हैं से Vars करने का विरोध किया । clojure.core

  3. ns-publics - ns-interns की तरह है, लेकिन भी शामिल है केवल गैर-निजी Vars

  4. ns-imports -। ns-map की तरह है, लेकिन केवल प्रविष्टियों क शामिल ose मान जावा कक्षाओं के अनुरूप हैं।

वहाँ भी ns-aliases जो प्रतीक हैं, जो जब अन्य नामस्थान से Vars की चर्चा करते हुए आशुलिपि उपनाम के रूप में इस्तेमाल किया जा सकता को सूचीबद्ध करता है; जैसे यदि आप (require '[clojure.contrib.math :as math]) पर कॉल करते हैं, ns-aliases में math (प्रतीक) की कुंजी के साथ एक प्रविष्टि शामिल होगी, जिसका मान वास्तविक नामस्थान clojure.contrib.math होगा। इन मानचित्रण को मानचित्र में शामिल नहीं किया गया है ns-map द्वारा लौटाया गया।

+0

क्या इन कार्यों की उपलब्धता और 'डॉक्टर' कार्य एक कारण है कि पुराने पुस्तकालयों और अन्य पैकेजों के लिए दस्तावेज प्रदान करना क्यों विशेष रूप से उच्च प्राथमिकता नहीं है? –

6

here पर एक नज़र डालें। अधिक विशेष रूप से:

;; Sometimes I like to ask which public functions a namespace provides. 
(defn- ns-publics-list [ns] (#(list (ns-name %) (map first (ns-publics %))) ns)) 
47

आप dir का उपयोग कर सकते हैं। (शायद यह तब उपलब्ध नहीं था जब सवाल पहले पूछा गया था।)

user=> (dir clojure.string) 
blank? 
capitalize 
escape 
join 
lower-case 
re-quote-replacement 
replace 
replace-first 
reverse 
split 
split-lines 
trim 
trim-newline 
triml 
trimr 
upper-case 
nil 
+0

नोटिस करने के लिए: किसी भी तरह क्लोजर 1.4 '(डीआईआर * एनएस *)' काम नहीं करता है, 'अपवाद कोई नेमस्पेस नहीं: * एनएस * मिली clojure.core/the-ns (core.clj: 3691) ' – xealits

+1

@xeslits, I' मुझे यकीन है कि आप सही हैं। यदि आप मेरे उत्तर में 'डीआईआर' दस्तावेज के लिंक का पालन करते हैं, तो एक कोने में नोटिस होता है जो दर्शाता है कि क्लोजर 1.6 में 'डीआईआर' पेश किया गया था। जब मैंने जवाब पोस्ट किया, तो शायद मुझे उस जानकारी को शामिल करना चाहिए था। इस बिंदु पर, वी। 1.5 वर्तमान रिलीज के पीछे पहले से ही तीन संस्करण है। यद्यपि ऐसे लोग हो सकते हैं जिनके पास 1.5 या 1.4 का उपयोग करने के अच्छे कारण हैं, मुझे लगता है कि वे मामले दुर्लभ हैं। – Mars

+2

@xealits @Mars इसका संस्करण के साथ कुछ लेना देना नहीं है। आपको केवल नामस्थान का वास्तविक प्रतीक प्रदान करने की आवश्यकता है: '(डीआईआर मेरा-वास्तविक-नामस्थान)' क्लोजर 1.8 में ठीक काम करता है, जबकि मुझे 'नो नेमस्पेस: * एनएस *' त्रुटि मिलती है, यदि मैं कोशिश करता हूं '(डीआईआर * एनएस *) '। –

0

काउंटरक्लॉक वार का उपयोग करने वालों के लिए, एक "नेमस्पेस ब्राउज़र" है जो डिफ़ॉल्ट रूप से दिखाया गया है।

तो दिखाई नहीं है, यह मेनू विकल्प के माध्यम से दिखाया जा सकता है:

विंडो> शो देखें> नामस्थान ब्राउज़र

आधिकारिक प्रलेखन: आधिकारिक दस्तावेज से http://doc.ccw-ide.org/documentation.html#_namespace_browser_view

अंश:

नेमस्पेस ब्राउज़र दृश्य सक्रिय REPL के सभी नामस्थानों के सभी प्रतीकों को प्रदर्शित करता है। [2]। यह आपको प्रासंगिक फ़ाइलों (अंदर के जार समेत) में प्रतीकों की परिभाषा पर कूदने की अनुमति देता है: केवल नेमस्पेस ब्राउज़र दृश्य में प्रतीक नाम पर डबल-क्लिक करें।

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

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