我只是在想,选择一个优势/劣势是否有优势或劣势,或者纯粹是项目范围/工作流程的设计选择?
方案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
非常感谢您的回复,谢谢!
答案 0 :(得分:2)
在方案1中,我相信您打算这样做:
(defn fun1 [x] (prn (* x x)))
(defn fun2 [y] (#'fun1 y))
(fun2 2)
几乎没有必要(也不希望)使用eval
有关这些方案1和2之间的区别的更多详细信息,请see this question。