Clojure—将函数作为var传递';vs';从另一个函数中调用函数?
我只是想知道选择其中一个是否有任何优点/缺点,或者它是否仅仅是一个项目范围/工作流程的设计选择 场景1:使用var和evalClojure—将函数作为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 我非常感谢您的回复,提前谢谢
(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得到了它。谢谢