2010-10-05 4 views
3

Как я буду оценивать следующее?Как вы оцениваете java.lang.String в clojure

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

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

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

Извините, я не понимаю вопроса. Можете ли вы спросить словами? Что-то должно делать? –

ответ

7

Две версии для Вас, чтобы рассмотреть - полностью эквивалентны, но полезны в качестве точки сравнения:

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

и это, используя destructuring и не -> macro использование:

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

resolve является очевидно, ключ. Документы - ваш друг. :-) Также, как несправедливое обобщение, eval почти никогда не требуется.

Смежные вопросы