Python “dir” equivalente in Clojure
Domanda
Qualcuno sa se c'è un equivalente per Clojure Pythons "dir". Fondamentalmente ho bisogno di conoscere le funzioni posso chiamare su qualcosa o più specificamente per gli oggetti Java voglio conoscere i metodi e le proprietà disponibili (non sono sicuro se in java si chiamano i metodi e le proprietà, questo è C # gergo).
Soluzione
clojure.contrib.repl-utils/show
per l'uso in 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[])
...
In alternativa, forse qualcosa di simile:
user=> (map #(.getName %) (.getMethods String))
("equals" "toString" "hashCode" "compareTo" ...)
.getFields
e .getConstructors
di conseguenza.
Altri suggerimenti
Il clojure.repl
namespace (che è disponibile dal Clojure 1.2) contiene la macro dir
e la funzione 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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow