2010-10-05 7 views
3

Comment est-ce que j'évalue à ce qui suit?Comment évaluez-vous un java.lang.String dans clojure

(defn run-clojure-func [] 
    (println "welcome")) 

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

java exam.Hello "run-clojure-func" 
+1

Désolé, je ne comprends pas la question. Pouvez-vous demander en mots? Qu'est-ce que -main est censé faire? –

Répondre

7

Deux versions pour que vous considériez - tout à fait équivalent, mais utile comme points de comparaison:

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

et ce, en utilisant destructuring et aucune utilisation -> macro:

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

resolve est évidemment la clé. Les docs sont ton ami. :-) Aussi, comme une généralisation injuste, eval est presque jamais nécessaire.

Questions connexes