以下面的函数为例:
(defn f [x y] (+ x y))
我想使用此函数为向量的每个元素添加2:
[1 2 6 3 6]
我可以使用map:
(map f [1 2 6 3 6] [2 2 2 2 2])
但是创建第二个向量似乎有点难看,其中每个元素都完全相同。
所以我认为使用闭包是一种更好的方法:
(map (fn g [x] (f x 2)) [1 2 6 3 6])
所以我的问题是:
在clojure中,当某些参数没有改变时,使用map的最佳方法是什么?
答案 0 :(得分:4)
只需应用partial
功能
(map (partial + 2) [1 2 6 3 6]) => (3 4 8 5 8)
答案 1 :(得分:2)
方法1 :使用repeat。
(repeat 2)
为您提供了一个无限2
s
在你的情况下,
(map f [1 2 6 3 6] [2 2 2 2 2])
应转换为
(map f [1 2 6 3 6] (repeat 2))
方法2 :使用匿名函数
(map #(f % 2) [1 2 6 3 6])