请在 2024 年 Clojure 调查中分享您的想法!

欢迎!请访问 关于 页面以了解有关如何使用这个页面的一些更多信息。

0
tools.macro

(defmacro event-handler (link: argsv & body)
`(reify EventHandler (~'handle ~argsv ~@body)))

(macroexpand
'(macrolet (link: (add-handler [& body)

                       `(event-handler
                          (link: ~'this ~'e) ~@body))]
 (add-handler 1)))

结果是有额外的括号出现在 handle 之后和 (link: this e) 之前。

(do (reify* (link: javafx.event.EventHandler) (handle ((link: this e) 1))))

2 答案

0

评论由:oskarkv 提出

这已经在版本 0.1.5 中修复,但github页面 https://github.com/clojure/tools.macro 说最新的版本是 0.1.2。

0
参考: https://clojure.atlassian.net/browse/TMACRO-7 (由 alex+import 提出)
...