java - Java 的 toString() 对 Clojure 函数的等价物

标签 java clojure metadata tostring

我正在使用的一些 Java 代码调用了 toString()在我的 Clojure 函数对象上,它返回类似于 #<ns$something something.something$something@7ce1eae7>> 的内容- 我想返回其他东西......大概有一种方法可以在函数中包含一些元数据,以便它们的对象'toString()返回那个?

最佳答案

如果你只是想让你的对象的 REPL 输出更有意义,你可以实现一个 defmethod print-method对于有问题的类(class)。

这是我最近写的一些代码的简化版本;这使得 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 数据结构执行此操作对于适当的类(The Joy of Clojure 的特点是 print-method 代表 clojure.lang.PersistentQueue,默认情况下没有很好的表示)。 o上面是你正在处理的实际对象和w是一个作家(这些类型的打印功能需要)。

关于java - Java 的 toString() 对 Clojure 函数的等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5306015/

相关文章:

java - ImmutablePair 和 Pair 编译错误在反编译类中工作

java - org.hibernate.MappingException : Unknown entity when trying to create a new record

clojure - 我应该在 Clojure 中哪里使用 defrecord?

c++ - 如何解析 KLV 数据?

c# - 使用 C# 从 ASP.Net MVC 中的视频文件获取视频元数据的最佳方法是什么?

java - Hashicorp Vault 加密数据

java - Log4j 2.0 - 将更多转换说明符作为一个元素填充在一起

clojure - 在Clojure中,表达式的结果可以成为(def)的第一个参数吗?

xml - Clojure:data.xml:创建名为 "xlink:href"的键

android - 手动获取 SHOUTcast 元数据