你如何评估clojure中的java.lang.String

apo*_*sto 3 clojure

我将如何评价以下内容?

(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)

cem*_*ick 7

您需要考虑两个版本 - 完全相同,但作为比较点有用:

(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几乎从来没有必要.