2013-12-16 88 views
6

我正在尋找將類型添加到clojure地圖的最輕方法 我知道我可以使用記錄來做到這一點,但我想知道如果我可以做到這一點與普通地圖在clojure中添加類型到地圖的最簡單方法

我有一個函數來創建一個映射,代表一個人:

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

我想能夠做這樣的事情:

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

回答

7

你可以ATTAC h一些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 
+0

如果OP真的只想要一種方式來_tag_某些值,這裏是慣用的解決方案恕我直言。做得好! :) – xsc

相關問題