我如何评估以下内容?
(defn run-clojure-func []
(println "welcome"))
(defn -main [& args]
(eval (*func* (first args)))
java exam.Hello "run-clojure-func"
答案 0 :(得分:7)
您需要考虑两个版本 - 完全相同,但作为比较点有用:
(defn -main [& args]
((-> args first symbol resolve)))
这样,使用destructuring而不是->
macro用法:
(defn -main [[fn-name]]
((resolve (symbol fn-name))))
resolve
显然是关键。文档是你的朋友。 :-)另外,作为一种不公平的概括,eval
几乎不需要。