Clojure-将函数作为var'vs'传递从另一个函数内部调用函数?

时间:2019-04-11 15:19:28

标签: 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 个答案:

答案 0 :(得分:2)

在方案1中,我相信您打算这样做:

(defn fun1 [x] (prn (* x x)))
(defn fun2 [y] (#'fun1 y))
(fun2 2)

几乎没有必要(也不希望)使用eval

有关这些方案1和2之间的区别的更多详细信息,请see this question