Как использовать «это» в прокси-макросе в Clojure - PullRequest
2 голосов
/ 21 апреля 2020

У меня есть такой код:

(def prx (proxy [java.lang.Runnable] []
    (run 
      ([] (println "0000" 'this) 1))
    (toString ([] (str "------" 'this)))))

(.toString prx)

Как получить ссылку "this" внутри макроса прокси?

1 Ответ

4 голосов
/ 21 апреля 2020

Каждый реализуемый вами метод получает this в качестве первого аргумента.

См. Документы:

Метод fns является замыканием и может захватывать среду, в которой вызывается прокси. Каждый метод fn принимает дополнительный неявный первый аргумент, который связан с 'this.

Кроме того, проверьте эту статью , в которой подробно описывается, когда использовать proxy vs reify против gen-class.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...