2011-01-09 11 views
15

में बराबर किसी को भी पता है कि अगर वहाँ अजगर के लिए "dir" एक Clojure बराबर है है। मूल रूप से मैं काम करता है मैं जावा वस्तुओं मैं तरीकों और उपलब्ध संपत्तियों जानना चाहता हूँ के लिए और अधिक विशेष कुछ पर फोन कर सकते हैं या पता होना चाहिए (मुझे यकीन है कि अगर जावा में वे कहा जाता तरीकों और गुण हैं नहीं कर रहा हूँ, इस सी # शब्दावली है)।अजगर "dir" Clojure

उत्तर

15

clojure.contrib.repl-utils/show आरईपीएल में उपयोग के लिए:

user=> (use '[clojure.contrib.repl-utils :only (show)]) 
nil 
user=> (show String) 
=== public final java.lang.String === 
[ 0] static CASE_INSENSITIVE_ORDER : Comparator 
[ 1] static copyValueOf : String (char[]) 
[ 2] static copyValueOf : String (char[],int,int) 
[ 3] static format : String (Locale,String,Object[]) 
[ 4] static format : String (String,Object[]) 
... 

वैकल्पिक रूप से, शायद कुछ की तरह:

user=> (map #(.getName %) (.getMethods String)) 
("equals" "toString" "hashCode" "compareTo" ...) 

.getFields, और .getConstructors तदनुसार।

8

clojure.repl नाम स्थान (जो Clojure 1.2 के बाद से उपलब्ध है) मैक्रो dir और समारोह dir-fn शामिल हैं:

user=> (clojure.repl/dir clojure.main) 
load-script 
main 
repl 
... 

user=> (clojure.repl/dir-fn 'clojure.main) 
(load-script main repl repl-caught repl-exception 
repl-prompt repl-read skip-if-eol skip-whitespace 
with-bindings) 
+0

ओह, मैं 'clojure.repl' की शुरूआत (Clojure एटीएम के लिए इतना समय नहीं याद किया) - जानकार अच्छा लगा। लेकिन ओपी द्वारा पूछे जाने पर, आप जावा सामान के साथ इसका उपयोग कैसे करते हैं? '(clojure.repl/dir स्ट्रिंग) 'मेरे लिए काम नहीं करता है। – danlei

+0

सच है, यह केवल क्लोजर नामस्थान के लिए है। – Jonas

+0

मुझे आश्चर्य है कि क्यों उन्होंने clojure.repl में 'show' जैसे कुछ शामिल नहीं किया था। वैसे भी, आपके उल्लेख के लिए +1। – danlei