Equivalent to clojure.contrib's show?

2019-04-06 12:17发布

问题:

There used to be this useful utility called show in clojure.contrib. Now, that it's deprecated, is there an equivalent to it?

Thanks!

回答1:

De-constructing show to be more "simple", making available distinct pieces of re-usable functionality, was discussed by Stuart Halloway in a talk he give on clojure simplicity.

The resulting code makes use of clojure.reflect/reflect and clojure.pprint/print-table and 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))


回答2:

I refer you to the Where Did Clojure.Contrib Go document, which says about clojure.contrib.repl-utils:

Migrated to clojure.repl and clojure.java.javadoc. show functionality similar to clojure.reflect/reflect.

The clojure.reflect API documentation is here, and the clojuredocs.org examples are here.