Python中的"dir"等同于Clojure

Ali*_*Ali 15 python clojure dir

有没有人知道是否有一个Clojure相当于Pythons"dir".基本上我需要知道我可以调用某些东西或更具体的java对象的函数我想知道可用的方法和属性(我不确定在java中它们被称为方法和属性,这是C#lingo).

dan*_*lei 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[])
...
Run Code Online (Sandbox Code Playgroud)

或者,可能是这样的:

user=> (map #(.getName %) (.getMethods String))
("equals" "toString" "hashCode" "compareTo" ...)
Run Code Online (Sandbox Code Playgroud)

.getFields,并.getConstructors据此.


Jon*_*nas 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)
Run Code Online (Sandbox Code Playgroud)