以编程方式计算Clojure中的函数列表
我正在尝试找出如何以编程方式计算函数列表 假设我有以下代码:以编程方式计算Clojure中的函数列表,clojure,Clojure,我正在尝试找出如何以编程方式计算函数列表 假设我有以下代码: (defn foo [] (println "foo")) (defn bar [] (println "bar")) (def funcs [foo bar] ) 我希望以编程方式执行funcs的所有函数 我尝试使用评估,但没有成功 感谢您的帮助。如果您想要返回值,并且可以进行惰性评估(在访问返回值之前,不保证调用您的函数),如果您不需要这些值并且这样做是为了立即产生副作用,请使用for (doseq [f [
(defn foo
[]
(println "foo"))
(defn bar
[]
(println "bar"))
(def funcs [foo bar] )
我希望以编程方式执行funcs
的所有函数
我尝试使用评估
,但没有成功
感谢您的帮助。如果您想要返回值,并且可以进行惰性评估(在访问返回值之前,不保证调用您的函数),如果您不需要这些值并且这样做是为了立即产生副作用,请使用
for
(doseq [f [foo bar]]
(f))
(def fs
(for [f [foo bar]]
(f)))
您可以使用
juxt
:
((apply juxt funcs))
您可以通过调用简单地映射函数:
(map #(%) funcs)
并可用于强制效果doall
保留结果,而dorun
只返回nil
(defn foo [] :foo) ; no side-effects
(doall (map #(%) [foo foo]))
;=> (:foo :foo)
(defn print-foo [] (println (foo))) ; with side-effects
(dorun (map #(%) [print-foo print-foo]))
;=> :foo
; :foo
; nil
酷。谢谢效果很好。