2011-02-13 48 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)