我正在寻找将类型添加到clojure地图的最轻的方法 我知道我可以使用记录来做到这一点,但我想知道我是否可以使用常规地图
我有一个函数来创建一个代表一个人的地图:
(defn person [first-name last-name] {:first-name first-name :last-name last-name})
我希望能够做到这样的事情:
(def wayne (person "Wayne" "Shorter"))
....
(type wayne)
=> person
答案 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