我使用的一些
Java代码在我的Clojure函数对象上调用toString(),它返回像#< ns $something something.something$something@7ce1eae7\u0026gt;> – 我想返回其他东西…可能有一个在函数中包含一些元数据的方式,以便他们的对象toString()返回呢?
解决方法
如果您只想使对象的REPL打印更有意义,您可以为有问题的类实现defmethod print-method.
这是我最近写的一些代码的缩写版本这使得Selenium-WebDriver WebDriver对象的REPL打印更有意义:
(defmethod print-method WebDriver [o w] (print-simple (str "#<" "Title: " (.getTitle o) "," "URL: " (.getCurrentUrl o) " >") w))
这样打印出像#< Title:A Title,URL:http://example.com>
在这里,WebDriver代表一个类;您可以通过为适当的类实现print-method,为内置的Clojure数据结构轻松实现此功能(Clojure的Joy为默认情况下没有很好的表示形式的clojure.lang.PersistentQueue的打印方法提供功能).上面的o是你正在处理的实际对象,w是一个作家(这些打印功能需要).