2011-01-09 49 views
15

有人知道Pythons“dir”是否有Clojure等价物。基本上我需要知道我可以调用的某些或更具体的Java对象的函数我想知道可用的方法和属性(我不确定是否在java中它们被称为方法和属性,这是C#术语)。Clojure中的Python“dir”相当于

回答

15

clojure.contrib.repl-utils/show用于在REPL使用:

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的大气压) - 很高兴知道。但是,按照OP的要求,如何将它与Java的东西结合使用呢? `(clojure.repl/dir字符串)`不适合我。 – danlei 2011-01-09 08:15:25