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—将函数作为var传递';vs';从另一个函数中调用函数?_Clojure_Functional Programming - Fatal编程技术网

Clojure—将函数作为var传递';vs';从另一个函数中调用函数?

Clojure—将函数作为var传递';vs';从另一个函数中调用函数?,clojure,functional-programming,Clojure,Functional Programming,我只是想知道选择其中一个是否有任何优点/缺点,或者它是否仅仅是一个项目范围/工作流程的设计选择 场景1:使用var和eval (defn fun1 [x] (prn (* x x))) (defn fun2 [y] (#'fun1 y)) (eval (fun2 2)) 4 nil 场景2:创建函数调用的顺序链接 (defn fun1 [x] (prn (* x x))) (defn fun3 [y] (fun1 y)) (fun3 2) 4 nil 我非常感谢您的回复,提前谢谢

我只是想知道选择其中一个是否有任何优点/缺点,或者它是否仅仅是一个项目范围/工作流程的设计选择

场景1:使用var和eval

 (defn fun1 [x] (prn (* x x)))
 (defn fun2 [y] (#'fun1 y))
 (eval (fun2 2))
 4
 nil
场景2:创建函数调用的顺序链接

(defn fun1 [x] (prn (* x x)))
(defn fun3 [y] (fun1 y))
(fun3 2)
4
nil

我非常感谢您的回复,提前谢谢

在场景1中,我相信您是有意这样做的:

(defn fun1 [x] (prn (* x x)))
(defn fun2 [y] (#'fun1 y))
(fun2 2)
几乎没有必要(也不希望)使用
eval


有关场景1和场景2之间差异的更多详细信息,请。

注意
eval
是一个函数,因此
(eval(fun2))
调用
(fun2)
,然后调用
eval
结果,即
(eval4)
,因此没有理由选择这种方法。通过var直接调用函数也是不必要的,因为符号被求值为相应var的值。@Lee得到了它。谢谢