鉴于我定义了两个对象(在本例中为记录):
(defrecord rec1 [one two])
(defrecord rec2 [one two])
我在列表中有这两条记录(未实例化):
(def recs [rec1 rec2])
如何在列表中实例化这两条记录的最佳方法是什么?
下面给出一个例外
(map (fn [rec] (rec. 1 2)) recs)
因为 new 和点构造函数需要一个类名符号。那么解决这个问题的最佳方法是什么?到目前为止,反射似乎是唯一的方法:
(map #(clojure.lang.Reflector/invokeConstructor % (to-array [1 2 3])) recs)
这似乎是一种过于丑陋(且缓慢)的方式来执行看似简单的任务,即在对象上调用构造函数。那么正确(或惯用)的方式是什么?