Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将相同的参数应用于clojure中的函数调用列表?_Clojure - Fatal编程技术网

如何将相同的参数应用于clojure中的函数调用列表?

如何将相同的参数应用于clojure中的函数调用列表?,clojure,Clojure,假设我想将参数p1和p2应用于函数调用列表: (defn some-func [] (let [p1 a p2 b] (f1 p1 p2) (f2 p1 p2) (f3 p1 p2) ... )) 做这件事的好方法和简洁方法是什么?您可能需要回顾一下。我可以做你想做的事 不过要注意,juxt有点晦涩难懂,可能会使您的代码难以阅读。您可能需要查看。我可以做你想做的事 不过要小心,juxt有点晦涩难懂,会让你很难读懂你的代码。假设你只想要副作用,我会使用doseq来

假设我想将参数p1和p2应用于函数调用列表:

(defn some-func []
    (let [p1 a p2 b]
    (f1 p1 p2)
    (f2 p1 p2)
    (f3 p1 p2)
...
))
做这件事的好方法和简洁方法是什么?

您可能需要回顾一下。我可以做你想做的事

不过要注意,
juxt
有点晦涩难懂,可能会使您的代码难以阅读。

您可能需要查看。我可以做你想做的事


不过要小心,
juxt
有点晦涩难懂,会让你很难读懂你的代码。

假设你只想要副作用,我会使用
doseq
来强制调用; 迭代要调用的函数。e、 g

user=> (doseq [f [println println println]] (f 1))
1
1
1
nil

假设您只需要副作用,我会使用
doseq
强制调用; 迭代要调用的函数。e、 g

user=> (doseq [f [println println println]] (f 1))
1
1
1
nil

您可以使用
for
map
,两者都返回
clojure.lang.LazySeq
。小型工作示例:

(defn f1 [x y] (+ x y))
(defn f2 [x y] (- x y))
(defn f3 [x y] (* x 1))

;; Method 1 - for
(for [f [f1 f2 f3]]
  (f 10 5))
;; => (15 5 50)

;; Method 2 - map
(map #(% 10 5) [f1 f2 f3])
;; => (15 5 50)

您可以使用
for
map
,两者都返回
clojure.lang.LazySeq
。小型工作示例:

(defn f1 [x y] (+ x y))
(defn f2 [x y] (- x y))
(defn f3 [x y] (* x 1))

;; Method 1 - for
(for [f [f1 f2 f3]]
  (f 10 5))
;; => (15 5 50)

;; Method 2 - map
(map #(% 10 5) [f1 f2 f3])
;; => (15 5 50)

juxt返回一个向量。我真正想要的是按顺序调用这些函数。我尝试过(lazy seq(juxt…),但它说“不能将lazyseq转换为IFn”。例如,如何将vec转换为IFn?请阅读上面两个链接上的文档,特别是第二个链接到clojuredocs的文档。orgjuxt返回一个向量。我真正想要的是按顺序调用这些函数。我试过了(lazy seq(juxt…),但上面写着“不能将lazyseq转换为IFn”。也就是说,如何将vec转换为IFn?阅读上面两个链接上的文档,特别是第二个链接到clojuredocs。或者如果你接受了一些问题的答案,那就太好了。你想仅仅为了“副作用”而应用这些功能吗或者您想使用它们的返回值?如果您接受了一些问题的答案,那就太好了。您想仅仅为了“副作用”而应用这些函数,还是想使用它们的返回值?