2011-02-13 22 views
1

當我做Clojure - 如何在宏中引用deftype的變量?

(defmacro my-deftype [& code] `(deftype [email protected] (toString [this] var1))) 
(my-deftype Qqq [var1] Object) 

它告訴CompilerException ... No such var: mynamespace/var1

如何引用在宏DEFTYPE的變量是否正確?我希望宏爲方法提供一個模板,並避免在每個方法中提及所有deftype的變量。

回答

2

命名空間擴張應由~'能夠防止:

(defmacro my-deftype [& code] `(deftype [email protected] (toString [~'this] ~'var1))) 
(my-deftype Qqq [var1] Object)