在clojure中向地图添加类型的最简单方法

时间:2013-12-16 15:46:45

标签: clojure

我正在寻找将类型添加到clojure地图的最轻的方法 我知道我可以使用记录来做到这一点,但我想知道我是否可以使用常规地图

我有一个函数来创建一个代表一个人的地图:

(defn person [first-name last-name] {:first-name first-name :last-name last-name})

我希望能够做到这样的事情:

(def wayne (person "Wayne" "Shorter"))
....
(type wayne) 
=> person  

1 个答案:

答案 0 :(得分:7)

您可以附加一些metadata

(defn person [first-name last-name]
      (with-meta {:first-name first-name :last-name last-name}
                 {:type 'Person}))

(def wayne (person "Wayne" "Shorter"))

(type wayne) ;; Person