Python "dir" эквивалент в Clojure - PullRequest
       6

Python "dir" эквивалент в Clojure

15 голосов
/ 09 января 2011

Кто-нибудь знает, существует ли эквивалент Clojure для питонов "dir".В основном мне нужно знать функции, которые я могу вызывать для чего-то или, более конкретно, для Java-объектов. Я хочу знать доступные методы и свойства (я не уверен, что в java они называются методами и свойствами, это C # lingo).

Ответы [ 2 ]

15 голосов
/ 09 января 2011

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 голосов
/ 09 января 2011

Пространство имен 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)
...