如果我有一个实现协议的记录向量,并且想要将每个记录的方法的返回值映射到另一个向量,那么有一种干净的方法吗?我可以使用带有匿名函数的map来包装对方法的调用,但这看起来有点笨拙。
编辑:
嗯,实际上,这没什么。您只需将该方法用作调用map的第一个参数中的函数。
(map mymethod myrecords)
由于一个无关的错误,这对我不起作用,我认为我必须这样做......
(map #(mymethod %) myrecords)
......我认为这是笨重的。所以这个问题无效。
答案 0 :(得分:1)
记录方法与其他方法一样使用地图:
(defprotocol Foo
(foo [this]))
(defrecord Bar [bar]
Foo
(foo [this] bar)
(map foo [(Bar. 1) (Bar. 2)])
=> (1 2)