To be clear: In the example, p1 is not an instance of Person. p1 is just a
map. An actual record has (at least) all of the basis fields.
user> (map->Person {:name "foo"})
#user.Person{:name "foo", :age nil, :company nil}
user> (dissoc *1 :age)
{:name "foo", :company nil} ;; not a record anymor
Maybe you are looking for something like this?
(map #(% p1) (map keyword (Person/getBasis)))
keyword can take a symbol as argument, and return a corresponding keyword.
Andy
On Sun, Dec 2, 2018 at 8:31 PM wrote:
>
> defrecord Person [name age company])
>
> (def p1 {:name "foo", :age 27, :compa
defrecord Person [name age company])
(def p1 {:name "foo", :age 27, :company :bar})
(map #(% p1) (keys p1))
("foo" 27 :bar)
user=> (map #(% p1) (Person/getBasis))
(nil nil nil nil)
user=> (map #(class %) (Person/getBasis))
(clojure.lang.Symbol clojure.lang.Symbol clojure.lang.Symbol
clojure.l