扩展自定义记录类型的"名称"

Dan*_*ton 3 clojure

我有一个记录,包括一个:name.有没有办法告诉clojure.core/name如何:name从我的记录中提取出来?

Hoa*_*ael 8

如果您能够更改defrecord声明,只需在clojure.lang.Named那里实现接口即可.

(defrecord MyRecord [name]
  clojure.lang.Named
  (getName [this]
    (:name this)))

(name (MyRecord. "Dan"))
;;=> "Dan""
Run Code Online (Sandbox Code Playgroud)