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