2013-07-30 9 views

Odpowiedz

10

Odbudowanie , aby być bardziej "prostym", udostępniającym różne elementy funkcji wielokrotnego użytku, zostało omówione przez Stuarta Hallowaya w talk, które podają na temat prostoty clojure.

Otrzymany kod wykorzystuje clojure.reflect/reflect i clojure.pprint/print-table i standard Clojure filter:

(require 'clojure.reflect) 
(require 'clojure.pprint) 

(->> (clojure.reflect/reflect java.lang.String) 
    :members 
    (filter #(.startsWith (str (:name %)) "last")) 
    (clojure.pprint/print-table)) 
+0

Jedną z fajnych rzeczy o 'show' jest to, że pracował w instancjach, jak również typów (patrz https://stackoverflow.com/questions/5821286). Czy znasz jakieś przykłady (np. W Clojuredocs lub blogach), które pokazują, jak pprint wartości zmiennych instancji instancji klasy Java? Przestrzeń nazw clojure.repl nie wydaje się wystarczająca (https://clojure.github.io/clojure/clojure.repl-api.html) –

+0

clojure.reflect/reflect above jest zbudowany na samym interfejsie API Java reflection powinien zrobić to, czego potrzebujesz. Częścią rozpadu "show" było to, że robił za dużo. Funkcja reflect została udostępniona w przestrzeni nazw clojure.reflect (a nie repl-api). Spróbuj powyższego przykładu z instancją typu string zamiast typu - (clojure.reflect/reflect "instancja ciągu znaków") –

6

odsyłam do dokumentu Where Did Clojure.Contrib Go, który mówi o clojure.contrib.repl-utils:

przeniesione do clojure.repl i clojure.java.javadoc. pokaż funkcjonalność podobną do clojure.reflect/reflect.

dokumentacji API clojure.reflect jest here i przykłady clojuredocs.org są here.