我将如何评价以下内容?
(defn run-clojure-func []
(println "welcome"))
(defn -main [& args]
(eval (*func* (first args)))
java exam.Hello "run-clojure-func"
Run Code Online (Sandbox Code Playgroud)
您需要考虑两个版本 - 完全相同,但作为比较点有用:
(defn -main [& args]
((-> args first symbol resolve)))
Run Code Online (Sandbox Code Playgroud)
(defn -main [[fn-name]]
((resolve (symbol fn-name))))
Run Code Online (Sandbox Code Playgroud)
resolve显然是关键.文档是你的朋友.:-)另外,作为不公平的概括,eval几乎从来没有必要.