我有一系列命名空间符号:
(def namespace-symbols (namespace-1 namespace-2 namespace-3))
我想在每个方法上调用完全相同的方法(比如, )。run
(map #{%/run} namespace-symbols)
不会工作。
我也试过
(defmacro namespace-run
[namespace]
`(~(identity namespace)/run))
这也行不通。有没有办法做到这一点?
更新:
我终于想出了一个这样的宏:
(defmacro namespace-run
[namespace]
`(~(symbol (str namespace "/run"))))
(macroexpand-1 '(namespace-run foobar))
;=> (foobar/run)
当然有更好的方法来做到这一点?