在clojure记录中,如何将记录数组映射到向量?

时间:2011-07-22 04:19:44

标签: clojure

如果我有一个实现协议的记录向量,并且想要将每个记录的方法的返回值映射到另一个向量,那么有一种干净的方法吗?我可以使用带有匿名函数的map来包装对方法的调用,但这看起来有点笨拙。

编辑:

嗯,实际上,这没什么。您只需将该方法用作调用map的第一个参数中的函数。

(map mymethod myrecords)

由于一个无关的错误,这对我不起作用,我认为我必须这样做......

(map #(mymethod %) myrecords)

......我认为这是笨重的。所以这个问题无效。

1 个答案:

答案 0 :(得分:1)

记录方法与其他方法一样使用地图:

(defprotocol Foo 
  (foo [this]))

(defrecord Bar [bar]
   Foo 
   (foo [this] bar)

(map foo [(Bar. 1) (Bar. 2)])
=> (1 2)