2013-12-16 11 views
6

Sto cercando il modo più leggero per aggiungere un tipo a una mappa di clojure So che potrei usare i record per farlo, ma mi chiedo se posso farlo con le mappe regolariil modo più semplice per aggiungere un tipo a una mappa in clojure

Ho una funzione per creare una mappa che rappresenta una persona:

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

Vorrei essere in grado di fare qualcosa di simile:

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

risposta

7

Si potrebbe attac h qualche 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

Se OP in realtà vuole solo un modo per _tag_ alcuni valori questo qui è la soluzione IMHO idiomatica. Molto bene! :) – xsc

Problemi correlati