Java的toString()等于Clojure函数

前端之家收集整理的这篇文章主要介绍了Java的toString()等于Clojure函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用的一些 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是一个作家(这些打印功能需要).

猜你在找的Java相关文章