Clojure - Как ссылаться на переменные deftype в макросах? - PullRequest
1 голос
/ 13 февраля 2011

Когда я делаю

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

, он говорит CompilerException ... No such var: mynamespace/var1

Как правильно ссылаться на переменные deftype в макросах?Я хочу, чтобы макросы предоставляли шаблон для методов и не упоминали все переменные deftype в каждом методе.

1 Ответ

2 голосов
/ 13 февраля 2011

Расширение пространства имен должно быть предотвращено ~':

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