Если вы просто хотите сделать распечатку REPL своих объектов более значимой, вы можете реализовать defmethod print-method
для рассматриваемого класса.
Вот сокращенная версия некоторого кода, который я написалотносительно недавно;это делает распечатку REPL объекта Selenium-WebDriver WebDriver более значимой:
(defmethod print-method WebDriver
[o w]
(print-simple
(str "#<" "Title: " (.getTitle o) ", "
"URL: " (.getCurrentUrl o) " >")
w))
Это печатает как #<Title: A Title, URL: http://example.com >
Здесь WebDriver
представляет класс;Вы можете также легко сделать это для встроенных структур данных Clojure, реализовав print-method
для соответствующего класса (Joy of Clojure имеет print-method
для clojure.lang.PersistentQueue
, который по умолчанию не имеет удобного представления).o
выше - это реальный объект, с которым вы имеете дело, а w
- писатель (требуется для этих функций печати).