2013-07-30 36 views

回答

10

拆除show变得更“简单”,使可用的重复功能的不同部分,由斯图尔特万洛耶在talk讨论他给clojure简单。

生成的代码使用的clojure.reflect/reflectclojure.pprint/print-table 和标准的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

一个约'show'的是,它的工作实例上,以及对类型(见HTTPS很酷的事情:/ /stackoverflow.com/questions/5821286)。您是否知道任何示例(例如,在Clojuredoc或博客中)展示如何印刷Java类实例的实例变量的值? clojure.repl命名空间似乎没有足够的(https://clojure.github.io/clojure/clojure.repl-api.html) –

+0

clojure.reflect/reflect上面是建立在Java反射API之上的它应该做你需要的。拆分“秀”的一部分是它做得太多了。反射功能在clojure.reflect命名空间(而不是repl-api)中可用。用字符串实例而不是类型 - (clojure.reflect/reflect“字符串实例”)来尝试上面的例子 –

6

我是指你的Where Did Clojure.Contrib Go文件,该文件说,大约clojure.contrib.repl-utils的:

迁移到clojure.repl和clojure.java.javadoc。显示与clojure.reflect/reflect相似的功能。

的clojure.reflect API文档是here,并且clojuredocs.org实例是here