2011-01-02 13 views

Respuesta

10

defrecord declara un tipo y un constructor, pero el tipo implementa la interfaz del mapa clojure. Solo necesita colocar los campos requeridos en la declaración. Por ejemplo,

(defrecord MyRecord [required1 required2]) 

(defn make-my-record [r1 r2 & [opt1 opt2]] 
    (assoc (MyRecord. r1 r2) :optional1 opt1 :optional2 opt2)) 

Se pueden usar como,

user> (make-my-record 1 2) 
#:user.MyRecord{:required1 1, :required2 2, :optional2 nil, :optional1 nil} 
user> (make-my-record 1 2 :a :b) 
#:user.MyRecord{:required1 1, :required2 2, :optional2 :b, :optional1 :a} 
Cuestiones relacionadas