基本上,我需要做类似的事情map,但不是将函数应用于集合中的所有元素,而是需要将相同的(一组)值应用于函数集合(此操作是否具有名称?) .这可能看起来像一个简单的问题,但我还没有在Clojure中找到一种惯用的方法.对于我需要仅对每个函数应用一个值的特殊情况,例如,我已经使用过
(for [f funs] (f value))
Run Code Online (Sandbox Code Playgroud)
其中value,当然,该值我需要每个功能采取作为一个参数,并且funs是其需要与被调用的函数集合value作为参数.
我的问题是,在Clojure中有一个函数可以做到这一点,但是对于任意数量的参数也是如此?或者上面确实是惯用的Clojure?
小智 6
来自BRAVE 和 TRUE 的 CLOJURE部分
你可以用 map 做的另一件有趣的事情是向它传递一个函数集合。如果您想对不同的数字集合执行一组计算,则可以使用它,如下所示:
(def sum #(reduce + %))
(def avg #(/ (sum %) (count %)))
(defn stats
[numbers]
(map #(% numbers) [sum count avg]))
(stats [3 4 10])
; => (17 3 17/3)
(stats [80 1 44 13 6])
; => (144 5 144/5)
Run Code Online (Sandbox Code Playgroud)