如何覆盖有序集的.toString方法

时间:2012-04-13 07:27:55

标签: string clojure println

我在Clojure 1.3.0中使用了有序集。我的project.clj包含[ordered "1.1.0"]

当我致电(str (ordered-set 1 2 3))时,我得到"ordered.set.OrderedSet@6",但当我拨打普通的clojure哈希集(str (hash-set 1 2 3))时,我会得到正确的"#{1 2 3}"

str方法在某处调用.toString,那么如何覆盖.toString的{​​{1}}方法,以便我可以从中获取正确的字符串?

感谢

1 个答案:

答案 0 :(得分:4)

嗯,这个问题有两个答案。一个是,ordered(我)的懒惰维护者应该一起行动并实施toString。另一种是,你可能不应该在任何你关心可读性的地方使用str - pr-str是一个更可靠的数据表示功能。例如,(str {:a 'a})(str {:a "a"})都会产生"{:a a}"。使用pr-str时,类型信息仍然存在。