Pythonの「dir」に相当するClojureがあるかどうか誰かが知っていますか。基本的に、何か、より具体的にはJavaオブジェクトに対して呼び出すことができる関数を知る必要があります。使用可能なメソッドとプロパティを知りたいです(Javaでそれらがメソッドとプロパティと呼ばれるかどうかはわかりません。これはC#の用語です)。
1175 次
3 に答える
15
clojure.contrib.repl-utils/showREPLで使用する場合:
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に応じて。
于 2011-01-09T04:38:18.630 に答える
9
名前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)
于 2011-01-09T07:29:02.733 に答える
0
clojure.contribは非推奨でありshow、もう存在しないため、これを使用します。
(use 'clojure.reflect)
(use 'clojure.pprint)
(defn py-dir [obj]
(let [types {clojure.reflect.Field "field" clojure.reflect.Constructor "constructor" clojure.reflect.Method "method"}]
(->> (clojure.reflect/reflect obj)
:members ;; list of maps
(map (fn [m] {:name (:name m) :parameter (:parameter-types m) :type (get types (type m))}))
(sort-by (juxt :type :name))
(clojure.pprint/print-table))))
試す:
(py-dir Integer)
それは戻ります:
| :name | :parameter | :type |
|------------------------+--------------------------------------+-------------|
| java.lang.Integer | [java.lang.String] | constructor |
| java.lang.Integer | [int] | constructor |
| BYTES | | field |
| DigitOnes | | field |
| DigitTens | | field |
| MAX_VALUE | | field |
| MIN_VALUE | | field |
| SIZE | | field |
| TYPE | | field |
| digits | | field |
| serialVersionUID | | field |
| sizeTable | | field |
| value | | field |
| bitCount | [int] | method |
| byteValue | [] | method |
| compare | [int int] | method |
| compareTo | [java.lang.Integer] | method |
| compareTo | [java.lang.Object] | method |
| compareUnsigned | [int int] | method |
| decode | [java.lang.String] | method |
| divideUnsigned | [int int] | method |
| doubleValue | [] | method |
| equals | [java.lang.Object] | method |
| floatValue | [] | method |
| formatUnsignedInt | [int int byte<> int int] | method |
| formatUnsignedInt | [int int char<> int int] | method |
| formatUnsignedIntUTF16 | [int int byte<> int int] | method |
| getChars | [int int byte<>] | method |
| getInteger | [java.lang.String java.lang.Integer] | method |
| getInteger | [java.lang.String int] | method |
| getInteger | [java.lang.String] | method |
| hashCode | [int] | method |
| hashCode | [] | method |
| highestOneBit | [int] | method |
| intValue | [] | method |
| longValue | [] | method |
| lowestOneBit | [int] | method |
| max | [int int] | method |
| min | [int int] | method |
| numberOfLeadingZeros | [int] | method |
| numberOfTrailingZeros | [int] | method |
| parseInt | [java.lang.CharSequence int int int] | method |
| parseInt | [java.lang.String int] | method |
| parseInt | [java.lang.String] | method |
| parseUnsignedInt | [java.lang.CharSequence int int int] | method |
| parseUnsignedInt | [java.lang.String int] | method |
| parseUnsignedInt | [java.lang.String] | method |
| remainderUnsigned | [int int] | method |
| reverse | [int] | method |
| reverseBytes | [int] | method |
| rotateLeft | [int int] | method |
| rotateRight | [int int] | method |
| shortValue | [] | method |
| signum | [int] | method |
| stringSize | [int] | method |
| sum | [int int] | method |
| toBinaryString | [int] | method |
| toHexString | [int] | method |
| toOctalString | [int] | method |
| toString | [int] | method |
| toString | [int int] | method |
| toString | [] | method |
| toStringUTF16 | [int int] | method |
| toUnsignedLong | [int] | method |
| toUnsignedString | [int] | method |
| toUnsignedString | [int int] | method |
| toUnsignedString0 | [int int] | method |
| valueOf | [java.lang.String int] | method |
| valueOf | [int] | method |
| valueOf | [java.lang.String] | method |
于 2021-11-02T08:32:28.240 に答える