2012-07-26 131 views
2

爲什麼下面的代碼不能通過編譯?Clojure編譯問題

(defn testit [asym] (var asym)) 

的錯誤是:

CompilerException java.lang.RuntimeException: Unable to resolve var: asym in this context, compiling:(NO_SOURCE_PATH:1) 

回答

2

asym沒有一個var,這是一個地方;在這種情況下,您定義的函數的唯一參數爲testit var。

如果你想從該函數返回asym

(defn testit [asym] asym) 

如果asym是一個符號,它的名字要返回一個變種,然後使用resolve

(defn testit [asym] (resolve asym)) 

一般注意事項:(var x)是對應於閱讀器語法#'x的擴展special form