2013-12-16 12 views
6

Szukam najlżejszego sposobu dodania typu do mapy clojure Wiem, że mógłbym użyć rekordów do robienia tego, ale zastanawiam się, czy mogę to zrobić ze zwykłymi mapamiNajprostszy sposób dodawania typu do mapy w clojure

mam funkcji, aby stworzyć mapę, która reprezentuje osobę:

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

Chciałbym móc zrobić coś takiego:

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

Odpowiedz

7

Mogłabyś attac h niektóre 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

Jeśli PO naprawdę chce tylko sposób na _tag_ pewne wartości to tu jest rozwiązanie idiomatyczne IMHO. Dobra robota! :) – xsc

Powiązane problemy