我需要为Clojure添加几个方法defprotocol,我正在为几个相同的Swing组件编写:
(defprotocol view-methods
(ok-button-add-action-listener [this listener])
(ok-button-set-enabled [this enabled])
(ok-button-set-selected [this selected])
(cancel-button-add-action-listener [this listener])
(cancel-button-set-enabled [this enabled])
(cancel-button-set-selected [this selected])
(other-button-add-action-listener [this listener])
(other-button-set-enabled [this enabled])
(other-button-set-selected [this selected]))
Run Code Online (Sandbox Code Playgroud)
有没有办法,我可以写一个宏,返回所有三个方法签名(任何方式xxx-button-add-action-listener,xxx-button-set-enabled,xxx-button-set-selected)?
(defprotocol view-methods
(add-methods ok)
(add-methods cancel)
(add-methods other))
Run Code Online (Sandbox Code Playgroud)
这个宏需要在defprotocol每次调用时增加三个项目.
一个宏可以返回`~@a-list并扩展"到位"吗?