如何在Clojure中评估一个java.lang.String

3
我该如何对以下内容进行求值?
(defn run-clojure-func []
  (println "welcome"))

(defn -main [& args]
  (eval (*func* (first args)))

java exam.Hello "run-clojure-func"

1
抱歉,我不理解你的问题。你能用文字再问一遍吗?-main应该做什么? - John Lawrence Aspden
1个回答

7

这里有两个版本供您参考,它们的意义完全相同,但可作为比较的参考点:

(defn -main [& args]
  ((-> args first symbol resolve)))

使用解构而不使用->,可以实现以下效果:

(defn -main [[fn-name]]
  ((resolve (symbol fn-name))))

resolve 显然是关键。文档是你的朋友。 :-) 此外,作为不公平的概括,eval 几乎永远不必要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接